如何使用 - 在名称中指定属性

时间:2010-11-13 19:36:09

标签: c# asp.net-mvc jquery-mobile

我在Web应用程序中使用ASP.NET MVC和JQueryMobile。我想生成一个链接:

<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>

我有一个帮助程序扩展方法,可以让我这样做:

<%= Html.ActionLink<WhateverController>(c => c.Previous(), 
         "Previous", 
         new { data-role = "button", data-icon="arrow-l" } ) %>

data-roledata-icon在C#中作为属性名称无效。使用@data-role也不起作用。

有什么语法可以解决这个问题吗?或者我仍然坚持创建一个更专业的帮助器,知道正确的属性名称。

3 个答案:

答案 0 :(得分:8)

您应该可以使用IDictionary<string, object>代替匿名对象:

Html.ActionLink<WhateverController>(c => c.Previous(), 
     "Previous", 
     new Dictionary<string, object>
     {
          { "data-role", "button" },
          { "data-icon", "arrow-l"}
     })

答案 1 :(得分:8)

除了svick的回复之外,我们在ASP.NET MVC 3中进行了一次巧妙的更改,其中包含下划线的属性会自动将下划线转换为破折号。

所以,如果你有这样的代码:

<%= Html.ActionLink<WhateverController>(c => c.Previous(),  
     "Previous",  
     new { data_role = "button", data_icon="arrow-l") %> 

它将使用破折号呈现标记:

<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>  

答案 2 :(得分:1)

因为该字符也是减法/一元减号运算符,所以不能在标识符中使用它。我认为自定义助手方法可能是你最好的选择。