Вопрос

Я использую 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>  

Поскольку этот персонаж также является вычитанием / унарийным оператором минус, вы не можете использовать его в идентификаторе. Я думаю, что метод пользовательского помощника, вероятно, является вашей лучшей ставкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top