题
我在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
也不起作用。
有没有语法可以解决这个问题?或者,我坚持创建一个更专业的助手,该助手知道正确的属性名称。
解决方案
你应该能够使用 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>
因为该字符也是扣除/单位减操作员,所以您不能在标识符中使用它。我认为自定义辅助方法可能是您最好的选择。
不隶属于 StackOverflow