【发布时间】:2011-12-16 10:46:56
【问题描述】:
如何使用标准 HTML 帮助程序和 Razor 视图引擎生成以下 input 元素:
<input id="Foo" name="Foo" type="text" autofocus />
我可以使用标准的 HTML 帮助程序还是必须自己编写?
任何帮助将不胜感激!
【问题讨论】:
标签: asp.net-mvc-3 razor
如何使用标准 HTML 帮助程序和 Razor 视图引擎生成以下 input 元素:
<input id="Foo" name="Foo" type="text" autofocus />
我可以使用标准的 HTML 帮助程序还是必须自己编写?
任何帮助将不胜感激!
【问题讨论】:
标签: asp.net-mvc-3 razor
您可以将其他 HTML 属性传递给 TextBoxFor 方法:
@Html.TextBoxFor(m => m.Foo, new { autofocus="autofocus"})
编辑:
您只能通过以下方式获得autofocus="":
@Html.TextBoxFor(m => m.Foo, new { autofocus=""})
所有的内置助手都在内部使用TagBuilder类的MergeAttribute方法,它只支持以下格式的属性:key="value"。
因此,如果您只需要 autofocus,则需要使用自定义 html 构建器编写自己的帮助程序。
【讨论】:
<input ... autofocus="autofocus" />
我认为 autofocus="autofocus" 也是有效的,请参阅:http://www.w3schools.com/html5/att_input_autofocus.asp,因此您可以像这样使用 htmlAttributes 参数:
@Html.TextBox("Foo", null, new { autofocus = "autofocus" })
如果你真的只是想要自动对焦,我认为你不能使用标准的 HTML 助手,你必须这样做:
@Html.Raw("<input id=\"Foo\" name=\"Foo\" type=\"text\" autofocus />")
【讨论】:
<input ... autofocus="autofocus" />
不确定 MVC 4 在这种情况下还有什么变化,但我最终使用了@Html.TextBoxFor(x => x.Foo, new { autofocus = true })。
【讨论】: