Я пытаюсь использовать данные HTML5 - приписывает в моем проекте ASP.NET MVC 1. (Я - C# и ASP.NET новичок MVC.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
"Детали данных" в вышеупомянутом htmlAttributes дают следующую ошибку:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Это работает, когда я использую data_details, но я предполагаю, что это должно запускаться с "данных -" согласно спецификации.
Мои вопросы:
Обновление: MVC 3 и более новые версии имеют встроенную поддержку этого. Рекомендуемые решения см. в ответе JohnnyO, получившем большое количество голосов ниже.
Я не думаю, что есть какие-либо ближайшие помощники для достижения этого, но у меня есть две идеи для вас, чтобы попробовать:
// 1: pass dictionary instead of anonymous object
<%= Html.ActionLink( "back", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new Dictionary<string,Object> { {"class","prev"}, {"data-details","yada"} } )%>
// 2: pass custom type decorated with descriptor attributes
public class CustomArgs
{
public CustomArgs( string className, string dataDetails ) { ... }
[DisplayName("class")]
public string Class { get; set; }
[DisplayName("data-details")]
public string DataDetails { get; set; }
}
<%= Html.ActionLink( "back", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new CustomArgs( "prev", "yada" ) )%>
Просто идеи, не тестировал.
В итоге я использовал обычную гиперссылку вместе с Url.Action
, например:
<a href='<%= Url.Action("Show", new { controller = "Browse", id = node.Id }) %>'
data-nodeId='<%= node.Id %>'>
<%: node.Name %>
</a>
Это уродливо, но у вас есть немного больше контроля над тегом a
, который иногда бывает полезен на сайтах с высокой степенью AJAXified.
HTH