HTML5 data- *和asp.net MVC TextboxFor html属性


243

如何data-*使用TextboxFor 添加html属性?

这是我目前拥有的:

@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })

如您所见,这-在这里引起了问题data-url。这是怎么回事?


Answers:


417

您可以使用下划线(_),帮助程序足够聪明,可以完成其余工作:

@Html.TextBoxFor(
    model => model.Country.CountryName, 
    new { data_url = Url.Action("CountryContains", "Geo") }
)

对于希望在ASP.NET MVC 3之前的版本中实现相同功能的用户,他们可以:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>

8
是否在任何地方都指定了此行为:)?
Rookian

5
@Ryan,不,不是因为工作没有意义EditorFor。EditorFor帮助程序用于呈现与给定类型相对应的自定义HTML模板。模板可能包含许多元素,因此谈论模板中的属性实际上没有任何意义。当然,您总是可以编写一个自定义模板,该模板与additionalViewData可以传递给编辑器模板的参数一起使用,并将其作为属性输出到相应的输入字段中。
Darin Dimitrov

2
请注意,生成的标记带有下划线而不是连字符。句子“您可以使用下划线(_),帮助者足够聪明,可以完成其余工作”,特别是关于所谓智能的一点让我相信它会自动转换为-但事实并非如此。HTML5支持-。
艾伦·麦克唐纳

2
@AlanMacdonald将_其转换为-MVC的旧版本(中间版本)。这可能是最近的版本(S)已经下降了,但我成功地用它的MVC 3和4
brichins

4
@AlanMacdonald(和其他阅读)也_被转换为-MVC 5。我成功地用它在一个项目中,我目前的工作,它采用MVC 5
埃米·巴雷特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.