Html5 data-* with asp.net mvc TextboxFor html属性

Posted

技术标签:

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

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

这是我目前拥有的:

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

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

【问题讨论】:

Hyphenated html attributes with asp.net mvc 的可能重复项 【参考方案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。

以上是关于Html5 data-* with asp.net mvc TextboxFor html属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中的 HTML-5 data-* 属性中使用破折号

在asp.net中将数据绑定到html5 DataList

ASP.NET postback with JavaScript

ASP.NET 5 HTML5 历史

将 ASP.NET 文本框呈现为 HTML5 输入类型“数字”

带有 C# 实现的 ASP.NET HTML5 WebSockets