【问题标题】:ASP.NET MVC3 - Html.TextBoxFor and autofocus attributeASP.NET MVC3 - Html.TextBoxFor 和自动对焦属性
【发布时间】:2011-12-16 10:46:56
【问题描述】:

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

<input id="Foo" name="Foo" type="text" autofocus />

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

任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

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

    @Html.TextBoxFor(m => m.Foo, new { autofocus="autofocus"})
    

    编辑:
    您只能通过以下方式获得autofocus=""

    @Html.TextBoxFor(m => m.Foo, new { autofocus=""})
    

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

    【讨论】:

    • 谢谢,但我不想生成&lt;input ... autofocus="autofocus" /&gt;
    • 在这种情况下,您需要实现自己的助手,请参阅我更新的答案。
    【解决方案2】:

    我认为 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 />")
    

    【讨论】:

    • 谢谢,但我不想生成&lt;input ... autofocus="autofocus" /&gt;
    • 我编辑了我的答案以显示一种方法,但没有使用标准的 TextBox、TextBoxFor 东西。我能问你为什么不想要 autofocus="autofocus" 吗?
    【解决方案3】:

    不确定 MVC 4 在这种情况下还有什么变化,但我最终使用了@Html.TextBoxFor(x =&gt; x.Foo, new { autofocus = true })

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      相关资源
      最近更新 更多