【问题标题】:Html5 data-* with asp.net mvc TextboxFor html attributesHtml5 data-* with asp.net mvc TextboxFor html属性
【发布时间】:2011-06-18 03:46:53
【问题描述】:

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

这是我目前拥有的:

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

如您所见,-data-url 引起了问题。有什么办法吗?

【问题讨论】:

标签: asp.net-mvc html asp.net-mvc-3


【解决方案1】:

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

@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") } 
    }
) %>

【讨论】:

  • 这种行为是否在任何地方指定:) ?
  • @Ryan,不,不是因为为EditorFor 工作没有意义。 EditorFor 帮助器用于呈现与给定类型对应的自定义 HTML 模板。一个模板可以包含许多元素,所以谈论模板中的属性并没有什么意义。当然,您始终可以编写一个与 additionalViewData 参数一起使用的自定义模板,该参数可以传递给编辑器模板,并简单地将它们作为相应输入字段的属性输出。
  • 为了清楚起见,生成的标记有一个下划线而不是连字符。句子“你可以使用下划线 (_) 并且助手足够聪明,可以完成剩下的工作”,特别是关于所谓的智能的一点让我相信它会自动转换为 - 但事实并非如此。 HTML5 支持 -.
  • @AlanMacdonald _ 在 MVC 的旧(中间?)版本中转换为 -。可能是最新版本已删除它,但我在 MVC 3 和 4 上成功使用它。
  • @AlanMacdonald(和其他人阅读),_ 在 MVC 5 中也转换为 -。我在我目前正在从事的项目中成功使用它,该项目使用 MVC 5。
猜你喜欢
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
相关资源
最近更新 更多