ActionLink htmlAttributes

Pav*_*bil 81 asp.net-mvc actionlink html.actionlink asp.net-mvc-2

作品

<a href="@Url.Action("edit", "markets", new { id = 1 })" 
            data-rel="dialog" data-transition="pop" data-icon="gear" class="ui-btn-right">Edit</a>
Run Code Online (Sandbox Code Playgroud)

不工作 - 为什么?

@Html.ActionLink("Edit", "edit", "markets", new { id = 1 }, new {@class="ui-btn-right", data-icon="gear"})
Run Code Online (Sandbox Code Playgroud)

看来你不能把像data-icon ="gear"这样的东西传递给htmlAttributes?

建议?

mar*_*ind 194

问题是您的匿名对象属性data-icon具有无效的名称.C#属性的名称中不能包含破折号.有两种方法可以解决这个问题:

使用下划线而不是破折号(MVC会自动用发出的HTML中的破折号替换下划线):

@Html.ActionLink("Edit", "edit", "markets",
      new { id = 1 },
      new {@class="ui-btn-right", data_icon="gear"})
Run Code Online (Sandbox Code Playgroud)

使用字典中的重载:

@Html.ActionLink("Edit", "edit", "markets",
      new { id = 1 },
      new Dictionary<string, object> { { "class", "ui-btn-right" }, { "data-icon", "gear" } });
Run Code Online (Sandbox Code Playgroud)

  • 下划线技巧似乎不适用于MVC 2 (3认同)
  • 下划线似乎不适用于`Ajax.ActionLink`助手 (2认同)

hem*_*emp 24

用下划线替换所需的连字符; 它将自动呈现为连字符:

@Html.ActionLink("Edit", "edit", "markets",
    new { id = 1 },
    new {@class="ui-btn-right", data_icon="gear"})
Run Code Online (Sandbox Code Playgroud)

变为:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../>
Run Code Online (Sandbox Code Playgroud)