创建像 Helper.BeginForm() 这样的 MVC3 Razor Helper

2024-01-08

我想创建一个助手,我可以像 Helper.BeginForm() 一样在括号之间添加内容。我不介意为我的助手创建一个开始、结束,但这样做非常简单且容易。

基本上我想做的就是将内容包装在这些标签之间,以便它们呈现已经格式化

就像是

@using Html.Section("full", "The Title")
{
This is the content for this section
<p>More content</p>
@Html.TextFor("text","label")
etc etc etc
}

参数“full”是该 div 的 css id,“the title”是该部分的标题。

除了做我想做的事情之外,还有更好的方法来实现这一目标吗?

预先感谢您的任何帮助。


这是完全有可能的。在 MVC 中完成此操作的方式如下Helper.BeginForm是该函数必须返回一个实现了IDisposable.

The IDisposable界面 http://msdn.microsoft.com/en-us/library/system.idisposable.aspx定义了一个名为Dispose它在对象被垃圾收集之前调用。

在 C# 中,using关键字有助于限制对象的范围,并在它离开范围时立即对其进行垃圾收集。所以,使用它与IDisposable是自然的。

你会想要实现一个Section实现的类IDisposable。它必须在构造时呈现您的部分的开放标记,并在处置时呈现关闭标记。例如:

public class MySection : IDisposable {
    protected HtmlHelper _helper;

    public MySection(HtmlHelper helper, string className, string title) {
        _helper = helper;
        _helper.ViewContext.Writer.Write(
            "<div class=\"" + className + "\" title=\"" + title + "\">"
        );
    }

    public void Dispose() {
        _helper.ViewContext.Writer.Write("</div>");
    }
}

现在该类型可用,您可以扩展 HtmlHelper。

public static MySection BeginSection(this HtmlHelper self, string className, string title) {
    return new MySection(self, className, title);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建像 Helper.BeginForm() 这样的 MVC3 Razor Helper 的相关文章

  • 数据 URI 和潜在危险的 Request.Path 值

    我尝试过使用带有此 CSS 属性的数据 URI background image url data image png base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFW
  • 从另一名 Razor 助手中调用另一名 Razor 助手

    我需要创建 Razor 助手的第二个重载 并希望从另一个助手调用一个助手 使用一些特定参数 有没有办法实现呢 Sure using System Web Mvc using System Web Mvc Html public static
  • 在执行任何操作之前执行代码

    我有以下要求 在对我的网页的每个请求中 无论用户尝试调用哪个操作 我都需要调用一些代码来检查资源是否到位 如果是 那么一切都很好 并且应该正常调用操作方法 但是 如果此资源不可用 我希望所有请求返回一个单独的页面 要求用户从可用资源列表中选
  • DefaultModelBinder 无法反序列化作为 JSON 对象传递给操作的 .NET Dictionary 对象?

    我有一个非常简单的课程 public class FilterItem public Dictionary
  • MVC 3 将实体作为接口传递

    我目前正在开发一个 MVC 3 项目 使用 Ninject 作为我的 DI 业务对象存储在单独的程序集中 我遇到了控制器参数的问题 当回发 CRUD 操作时 我收到错误 无法创建接口实例 我知道您无法创建接口的实例 但似乎解决此问题的唯一方
  • 使用 MVC3 RTM 进行 Ninject

    我已将 MVC3 从 RC2 升级到 RTM 我们使用的是 Ninject 2 1 0 76 但升级后就停止工作了 因此 我使用 NuGet 管理器获取最新的 Ninject Ninject MVC3 和 Ninject Web Mvc 库
  • 将动态 json 对象传递给 C# MVC 控制器

    我正在使用 Net 4 MVC 3 和 jQuery v1 5 进行一些工作 我有一个 JSON 对象 它可以根据调用它的页面而改变 我想将对象传递给控制器 id 1 title Some text category test 我知道如果我
  • 在 MVC 中处理错误、异常和 404 的最佳路由方法是什么?

    SO 和网络上有很多文章试图优雅地处理 404 和异常 从我读过的内容来看 最好的建议似乎是为 404 设置一条路线 如下所示 routes MapRoute 404 PageNotFound url new controller Erro
  • Ninject:选择错误的构造函数

    我有一个带有 Ninject v2 2 1 4 的 ASP NET MVC 3 应用程序 一切都运行良好 然后突然我们开始看到 Ninject 尝试使用带有参数的构造函数而不是无参数构造函数来创建 DbContext 以下是绑定 kerne
  • 在极少数情况下,重定向到 ACS 并返回后 Cookie 为空

    我的网站上有一份注册表 填写完毕后 用户将被重定向到 Azure ACS 以便登录 登录后 用户将被重定向回我的网站并进行注册和登录 注册表单由 JavaScript 提交 用户填写的信息通过 RegisterController 中的 R
  • MVC 4 IntelliSense 无法在 Visual Studio 2010 的 Razor 中工作

    我将 Visual Studio 2010 与 ASP NET MVC4 一起使用 并且 IntelliSense for Razor 语法在应用程序的视图中对我不起作用 我能做些什么 还引用自 http sebnilsson com 10
  • asp.net mvc 3,主题(不同视图)

    我想向我的网站添加将使用完全不同视图的主题 我想在我的项目中看到它们 如下所示 Views Theme1 Views Theme2 而不是默认的 Views 当然 我需要一种简单的方法来在它们之间进行切换 所以问题是 如何让 ViewEng
  • ASP.Net MVC 4 通用主要难点

    我正在开发一个ASP NET MVC 4Web应用程序 以前我的 MVC 应用程序是使用MVC 3和这个新的MVC 4我刚刚复制 重复使用了我的应用程序认证和授权码从以前的应用程序 当用户登录我的网站时 我会执行以下操作 账户控制器 pub
  • MVC3 中的角色管理

    我想向应用程序添加一项功能 以便只有管理员才能创建用户 并且他可以向用户提供对特定页面的访问权限 他可以创建角色 可以为用户提供不同的角色 我正在使用 Visual Studio 2010 并在 MVC3 中构建此应用程序 请给我建议来弥补
  • RegisterGlobalFilters 的目的是什么?

    在 MVC3 中 我以这种方式启用了 CustomErrors
  • 当集合提交回控制器时,未将对象引用设置为对象的实例。错误

    我正在更新多条记录 单击提交按钮后出现错误 这表明控制器收到 NULL 并在第 36 行报告以下错误 下面是我的控制器 视图和模型的代码 你调用的对象是空的 描述 执行当前 Web 请求期间发生未处理的异常 请检查堆栈跟踪 有关该错误及其起
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • MVC3 Ajax.ActionLink

    对于以下情况 Ajax ActionLink Delete Delete AdminGroup new id item AdminGroupId new AjaxOptions Confirm Delete HttpMethod Delet
  • Asp.net错误无法加载文件或程序集[重复]

    这个问题在这里已经有答案了 可能的重复 计算机崩溃后 我的 Visual Studio 2010 将无法加载程序集 https stackoverflow com questions 4975455 after a computer cra
  • 处理 MVC 中的创建和修改日期

    你好 我有一个 MVC 应用程序 它有 CreatedDate 和 ModifiedDate 字段 1 CreatedDate是用户创建模块的时间 任何条目 2 ModifiedDate是用户编辑模块的时间 我有以下模型类 namespac

随机推荐

  • 如何将连接字符串中的“提供商名称”添加到上下文文件中?

    我正在使用 Entity Framework 5 代码优先方法 这是我的上下文文件 using IMS Domain Inventory using IMS Domain Security using IMS Domain StoredPr
  • 如何重定向“time”命令的输出?

    我尝试重定向 time 命令的输出 但我不能 time ls gt filename real 0m0 000s user 0m0 000s sys 0m0 000s 在文件中我可以看到输出ls命令 而不是time 请解释一下为什么我不能以
  • 如何更改 TabHost 中的选项卡图像

    我在应用程序中使用 TabHost 在应用程序中使用四个选项卡 并且当选择特定选项卡和未选择特定选项卡时 我想在 TabHost 中使用不同的图像 我需要为每个特定选项卡使用不同的图像 当我选择任何选项卡时 图像有点亮 当我切换到另一个选项
  • 为不同平台创建独立的 Java 可执行文件,无需安装

    我使用 jlink 创建了一个 Java 应用程序运行时映像 我希望能够将软件作为可执行文件发送到不同的平台 最好是在一个平台上构建 例如交叉编译 理想情况下 它是一个用户可以双击启动的应用程序文件 而无需安装任何东西 如何才能做到这一点
  • 如何在 SQL Server 中比较两列是否相等?

    我有两列根据某些条件连接在一起 但我还想检查其他两列是否相同 然后返回一个位字段 如果相同 有没有比使用 CASE WHEN 更简单的解决方案 理想情况下我可以使用 SELECT Column1 Column2 AS MyDesiredRe
  • 制作一门语言,需要一个好的后端

    我想做一种编译语言 我目前正在评估后端 到目前为止 我之所以关注 C 是因为它的执行速度 编译速度以及一个名为 TCC 的小型且易于使用的编译器 阅读了这里关于将其用作中间语言的讨论后 我正在尝试思考如何使其与垃圾收集兼容并处理异常 到目前
  • 元素必须是 根元素的直接子元素

    我正在尝试运行我的 Android 应用程序 但出现以下错误 该元素必须是根元素的直接子元素 并且元素类型 应用程序 必须由匹配的结束标记 终止 有人能给我写一个 正确 的版本吗 谢谢 这是我的清单文件
  • 无法连接到 SQL 数据库 - C#、VS2012、SQL Server 2012

    我的 Windows 7 64 位 PC 上安装了 SQL Server 2005 2008 和 2012 这是我的配置管理器 我确实看到代理已停止 不确定是否需要这样做 我把它分成两幅图像 这样尺寸就显示得更大 以下是 VS2012 数据
  • 如何以编程方式创建android形状背景?

    如何以编程方式创建这个形状
  • 修剪 Xcode 中的尾随空格

    有没有办法在我保存文件时强制 Xcode 修剪尾随空格 如果重要的话 我正在使用版本 3 1 3 从 Xcode 4 4 开始 默认情况下将自动修剪空格 除非该行全是空格 您还可以激活Including whitespace only li
  • 如何重定向到 Grails 应用程序中上次访问的页面?

    我是 Grails 的新手 我正在努力解决许多简单的问题 例如 当我从页面顶部布局上显示的模板视图登录 注销时 我尚未找到返回上次访问页面的正确方法 我解决此问题的最后一次尝试是将 params controller 和 params ac
  • 更新捆绑的资源文件

    我正在做以下事情 String str this is the new string URL resourceUrl getClass getResource path to resource File file new File reso
  • 使用maven编译时如何忽略.java文件?

    我的源目录中有 java 文件 由于某些 API 更改 这些文件尚未编译 我想一一修复源 忽略其中一些源来运行测试会很有用 使用 Maven 编译器插件和排除选项
  • 将 JSON 文件从类库 nuget 包复制到 bin

    我为这个模糊的标题表示歉意 但我不知道如何表达它 我正在使用 自定义 appsettings json 文件夹 json 文件位于使用它的类库中 我想创建一个 nuget 包来安装此类库 但还要确保将 appsettings json 复制
  • 构建网络服务器,客户端不确认 HTTP 200 OK 帧

    我正在根据教程构建自己的网络服务器 我找到了一种简单的方法来启动 TCP 连接并发送一段 http 数据 网络服务器将在微控制器上运行 因此它会非常小 无论如何 以下是我需要经历的顺序 接收SYN 发送SYN ACK 接收 ACK 连接现已
  • 使用 ZipFile 从 Python 中的 zip 文件中提取 .app

    我正在尝试从他们的快照中提取 Chromium app 的新版本 并且我可以很好地下载该文件 但是在提取它时 ZipFile 要么将其中的 chrome mac 文件夹提取为文件 说目录不 我对 python 很陌生 所以这些错误对我来说没
  • g++ 没有 libstdc++ - 可以做到吗? - 一个非常可配置的轻量级 libstdc++,我可以轻松地取出东西也可以做到这一点

    我在这里尝试一些令人毛骨悚然的事情 我正在尝试编写 C 程序 用 GNU 的 g 编译 但不依赖 libstdc 但似乎我需要它 即使是最基本的东西也需要它 具有可配置功能集的 libstdc 是可以接受的 我使用的命令是 g nodefa
  • SQL:选择列值至少出现N次的行?

    假设我有一个 SQL 表 Celebrities 其中包含两列 fname 和 lname fname lname Bill Clinton Bill Gates George Bush George Clinton Barack Obam
  • Seaborn FacetGrid 用户定义绘图函数

    在 Seaborn 中 您可以使用FacetGrid设置要在其上绘图的数据感知网格 然后您可以使用map or map dataframe绘制这些网格的方法 我无法正确指定与以下命令一起使用的用户定义绘图函数map or map dataf
  • 创建像 Helper.BeginForm() 这样的 MVC3 Razor Helper

    我想创建一个助手 我可以像 Helper BeginForm 一样在括号之间添加内容 我不介意为我的助手创建一个开始 结束 但这样做非常简单且容易 基本上我想做的就是将内容包装在这些标签之间 以便它们呈现已经格式化 就像是 using Ht