我在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 也不起作用。

有没有语法可以解决这个问题?或者,我坚持创建一个更专业的助手,该助手知道正确的属性名称。

有帮助吗?

解决方案

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

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

其他提示

除了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>  

因为该字符也是扣除/单位减操作员,所以您不能在标识符中使用它。我认为自定义辅助方法可能是您最好的选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top