Html5数据 - *与asp.net mvc TextboxFor html属性

Sha*_*ean 237 asp.net-mvc html5 asp.net-mvc-3

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

这就是我目前拥有的:

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

如你所见,这-引起了一个问题data-url.这是怎么回事?

Dar*_*rov 409

你可以使用下划线(_),帮助器足够聪明,可以完成剩下的工作:

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

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

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

  • 是否在任何地方指定了此行为:) (7认同)
  • @Ryan,不,不是因为为`EditorFor`工作没有意义.EditorFor助手用于呈现与给定类型对应的自定义HTML模板.模板可以包含许多元素,因此在模板中讨论属性并不真正有意义.当然,您总是可以编写一个自定义模板,该模板使用`additionalViewData`参数,该参数可以传递给编辑器模板,只需将它们作为属性输出到相应的输入字段即可. (5认同)
  • @AlanMacdonald(以及其他人阅读),`_`也在MVC 5中转换为`-`.我正在使用它成功地在我正在进行的项目中,它使用MVC 5. (3认同)
  • 为了清楚起见,结果标记有下划线而不是连字符。“你可以使用下划线 (_) 并且助手足够聪明来完成其余的工作”这句话,特别是关于所谓的智能的一点让我相信它会自动转换为 - 但它没有。HTML5 支持 -。 (2认同)
  • @AlanMacdonald 在旧的(中间?)版本的 MVC 中,`_` 被转换为 `-`。可能是最新版本已经放弃了它,但我在 MVC 3 和 4 上成功使用了它。 (2认同)