我在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
也不起作用。
有什么语法可以解决这个问题吗?或者我仍然坚持创建一个更专业的帮助器,知道正确的属性名称。
答案 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)
因为该字符也是减法/一元减号运算符,所以不能在标识符中使用它。我认为自定义助手方法可能是你最好的选择。