4

我在 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-role并且data-icon在 C# 中作为属性名称无效。使用@data-role也不行。

有什么语法可以解决这个问题吗?还是我坚持创建一个知道正确属性名称的更专业的助手。

4

3 回答 3

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>  
于 2010-11-13T20:25:20.783 回答
8

您应该能够使用IDictionary<string, object>而不是匿名对象:

Html.ActionLink<WhateverController>(c => c.Previous(), 
     "Previous", 
     new Dictionary<string, object>
     {
          { "data-role", "button" },
          { "data-icon", "arrow-l"}
     })
于 2010-11-13T19:49:25.573 回答
1

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

于 2010-11-13T19:43:03.223 回答