2010-11-05 49 views
74

WORKSActionLink的htmlAttributes

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

不起作用 - 为什么?

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

看来你不能将类似data-icon =“gear”的东西传递给htmlAttributes?

对此提出建议?

回答

175

问题是您的匿名对象属性data-icon的名称无效。 C#属性的名称中不能有破折号。有两种方法可以绕开这个问题:

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

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

使用接受的过载词典:

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

这真的帮了我 - 谢谢。 – Darbio 2011-09-19 02:29:40

+3

下划线技巧似乎不适用于MVC 2 – 2012-04-03 20:43:26

+2

下划线似乎不适用于“Ajax.ActionLink”助手 – Dmitry 2012-11-16 23:22:55

24

用下划线替换所需的连字符;它会自动被渲染为一个连字符:

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

变为:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../> 
-4
@Html.ActionLink("display name", "action", "Contorller" 
    new { id = 1 },Html Attribute=new {Attribute1="value"})