Asp.net mvc Html5数据-*带有asp.net mvc TextboxFor html属性

Asp.net mvc Html5数据-*带有asp.net mvc TextboxFor html属性,asp.net-mvc,html,asp.net-mvc-3,Asp.net Mvc,Html,Asp.net Mvc 3,如何使用TextboxFor添加data-*html属性 这就是我目前拥有的: @Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") }) 如您所见,-在这里导致了一个问题数据url。解决方法是什么?您可以使用下划线(\u),而助手足够聪明,可以完成其余的工作: @Html.TextBoxFor( model => m

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

这就是我目前拥有的:

@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })
如您所见,
-
在这里导致了一个问题
数据url
。解决方法是什么?

您可以使用下划线(
\u
),而助手足够聪明,可以完成其余的工作:

@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") } 
    }
) %>
model.Country.CountryName,
新字典{
{“数据url”,url.Action(“CountryContains”,“Geo”)}
}
) %>

是否在任何地方指定了此行为:)?@Ryan,没有,因为为
EditorFor
工作没有意义。EditorFor帮助器用于呈现与给定类型对应的自定义HTML模板。一个模板可能包含许多元素,因此在模板中谈论属性实际上没有意义。当然,您始终可以编写一个自定义模板,该模板使用
additionalViewData
参数,该参数可以传递给编辑器模板,并简单地将它们作为属性输出到相应的输入字段中。为了清楚起见,生成的标记具有下划线而不是连字符。“你可以使用下划线(41;并且助手足够聪明来做其余的事情”这句话,特别是关于假定的智能的一点让我相信它会自动转换为,但事实并非如此。HTML5支持-.@AlanMacdonald在较旧(中间?)版本的MVC中,
\uuu
转换为
-
。可能是最近的版本删除了它,但我在MVC 3和4上成功地使用了它。@AlanMacdonald(和其他阅读者),在MVC 5中,
\u
也被转换为
-
。我正在一个我目前正在从事的项目中成功地使用它,该项目使用了MVC 5.0版本