ASP.NET MVC2 Не заменяет подчеркивания черточками в HtmlAttributes - PullRequest
4 голосов
/ 10 ноября 2010

Я слышал из нескольких разных источников, что при использовании помощников HTML в ASP.NET MVC2 можно создавать пользовательские атрибуты с черточками в них (например, ) с помощью подчеркивания. вместо тире, и когда HTML-код записывается на страницу, подчеркивания будут заменены тире.

Итак, как-то так:

<%= HtmlActionLink(Model.Name, "MyView", null, new {data_rowId = Model.id}) %>

должно отображаться как

<a data-rowId="0" href="myURL">Row Name</a>

Но ... это не так. Я думаю, что, возможно, эта функция включена только в предварительном просмотре бета-версии MVC3 (как упомянуто в примечаниях к выпуску предварительного просмотра MVC3), но этот поток примерно такой же, как и в отношении MVC2.

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

Кто-нибудь знает, могу ли я сделать что-то простое, чтобы заставить эту конкретную вещь работать?

Ответы [ 3 ]

4 голосов
/ 10 ноября 2010

Не совсем самое элегантное решение , но, вероятно, приемлемо:

<%= Html.ActionLink(
    Model.Name, 
    "MyView", 
    null, 
    new Dictionary<string, string> { { "data-rowId",  Model.id } }
) %>

С другой стороны: data-rowId является абсолютно недопустимым атрибутом в HTML в соответствии со стандартными типами документов, поэтому, возможно,самым элегантным решением было бы избавиться от него: -)

3 голосов
/ 08 сентября 2011

System.Web.Mvc.HtmlHelper предоставляет статический метод, который делает то, что вы ищете:

<%= Html.ActionLink(
    Model.Name, 
    "MyView", 
    null, 
    HtmlHelper.AnonymousObjectToHtmlAttributes(new { data_row_id: Model.id })
) %>

Этот метод заменит подчеркивания дефисами - хотя кто-то и указал, обязательно используйте строчные имена атрибутов, которые соответствуют HTML5.

0 голосов
/ 10 ноября 2010

Рассмотрим, для чего предназначен ASP.NET MVC. Он разработан, чтобы дать вам жесткий контроль над HTML, который вы создаете. Если что-то недоступно, вам не придется прыгать через обручи, чтобы это исправить. То, что вы пытаетесь сделать, это создать недопустимый HTML или XHTML. Вместо того, чтобы пытаться сделать недопустимый HTML-код проще, просто используйте идентификатор. № 1 в рекомендациях по доступности: HTML действителен для объявленного типа.

Если идентификатор уникален в документе, вы будете удовлетворять HTML-соответствию, и с ним будет намного проще работать с jQuery.

Если можно, почему вы пытаетесь создать недействительный HTML? Или это проприетарный формат XML?

Кстати, MVC 3 RC вышел сегодня.


Редактировать :

Игра с функциями HTML5, хотя "блестящие" и kool, нестабильны. Многие части спецификации меняются так же часто, как еженедельно. То, что считается хорошим сейчас, может не быть хорошим, когда будет выпущена финальная спецификация. В MVC 3 есть некоторые вещи, которые сделают вашу работу более дружелюбной, сейчас вам нужно использовать словарь.

...