Как указать свойство с - в названии - PullRequest
4 голосов
/ 13 ноября 2010

Я использую 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 также не работает.

Есть ли синтаксис, чтобы обойти это?Или я застрял с созданием более специализированного помощника, который знает правильные имена атрибутов.

Ответы [ 3 ]

8 голосов
/ 13 ноября 2010

Вы должны иметь возможность использовать IDictionary<string, object> вместо анонимного объекта:

Html.ActionLink<WhateverController>(c => c.Previous(), 
     "Previous", 
     new Dictionary<string, object>
     {
          { "data-role", "button" },
          { "data-icon", "arrow-l"}
     })
8 голосов
/ 13 ноября 2010

В дополнение к ответу svick мы сделали аккуратное изменение в ASP.NET MVC 3, в котором свойства, в которых есть подчеркивание, автоматически преобразуют подчеркивания в тире.

Итак, если у вас есть такой кодthis:

<%= 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>  
1 голос
/ 13 ноября 2010

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

...