小编典典

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

all

我正在尝试在我的 ASP.NET MVC 1 项目中使用HTML5 数据属性。(我是 C# 和 ASP.NET MVC 新手。)

 <%= Html.ActionLink("芦 Previous", "Search",
     new { keyword = Model.Keyword, page = Model.currPage - 1},
     new { @class = "prev", data-details = "Some Details"   })%>

上述 htmlAttributes 中的“数据详细信息”给出以下错误:

 CS0746: Invalid anonymous type member declarator. Anonymous type members 
  must be declared with a member assignment, simple name or member access.

它在我使用 data_details 时有效,但我想它需要按照规范以“data-”开头。

我的问题:

  • 有没有办法让这个工作和使用 HTML5 数据属性与 Html.ActionLink 或类似的 Html 助手?
  • 是否有任何其他替代机制可以将自定义数据附加到元素?这些数据稍后将由 JS 处理。

阅读 68

收藏
2022-04-07

共1个答案

小编典典

更新:MVC 3 和更新版本对此具有内置支持。 有关推荐的解决方案,请参阅下面的 JohnnyO 高度赞成的答案。

我认为没有任何直接的帮手可以实现这一目标,但我确实有两个想法供您尝试:

// 1: pass dictionary instead of anonymous object
<%= Html.ActionLink( "back", "Search",
    new { keyword = Model.Keyword, page = Model.currPage - 1},
    new Dictionary<string,Object> { {"class","prev"}, {"data-details","yada"} } )%>

// 2: pass custom type decorated with descriptor attributes
public class CustomArgs
{
    public CustomArgs( string className, string dataDetails ) { ... }

    [DisplayName("class")]
    public string Class { get; set; }
    [DisplayName("data-details")]
    public string DataDetails { get; set; }
}

<%= Html.ActionLink( "back", "Search",
    new { keyword = Model.Keyword, page = Model.currPage - 1},
    new CustomArgs( "prev", "yada" ) )%>

只是想法,没有测试过。

2022-04-07