Как указать свойство с - во имя
-
09-10-2019 - |
Вопрос
Я использую 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>
Поскольку этот персонаж также является вычитанием / унарийным оператором минус, вы не можете использовать его в идентификаторе. Я думаю, что метод пользовательского помощника, вероятно, является вашей лучшей ставкой.