ASP.NET MVC3 - Html.TextBoxFor和autofocus属性

šlj*_*ker 24 razor asp.net-mvc-3

如何input使用标准HTML帮助程序和Razor视图引擎生成以下元素:

<input id="Foo" name="Foo" type="text" autofocus />
Run Code Online (Sandbox Code Playgroud)

我可以使用标准的HTML帮助程序,还是必须自己编写?

任何帮助将不胜感激!

nem*_*esv 44

您可以将其他HTML属性传递给TextBoxFor方法:

@Html.TextBoxFor(m => m.Foo, new { autofocus="autofocus"})
Run Code Online (Sandbox Code Playgroud)

编辑:
您只能获得autofocus="":

@Html.TextBoxFor(m => m.Foo, new { autofocus=""})
Run Code Online (Sandbox Code Playgroud)

所有内置的助手都在内部使用TagBuilder类的MergeAttribute方法,它只支持以下格式的属性:key="value".
因此,如果您只autofocus需要,您需要使用自定义html构建器编写自己的帮助程序.


kmp*_*kmp 7

我认为autofocus ="autofocus"也是有效的,请参阅:http://www.w3schools.com/html5/att_input_autofocus.asp,这样你就可以像这样使用htmlAttributes参数:

@Html.TextBox("Foo", null, new { autofocus = "autofocus" })
Run Code Online (Sandbox Code Playgroud)

编辑

我认为你不能使用标准的HTML助手,如果你真的只想要自动对焦,你必须做这样的事情:

@Html.Raw("<input id=\"Foo\" name=\"Foo\" type=\"text\" autofocus />")
Run Code Online (Sandbox Code Playgroud)


Ju6*_*aut 7

不确定MVC 4在这个场景中还有哪些变化,但我最终使用了@Html.TextBoxFor(x => x.Foo, new { autofocus = true }).