Как поместить html-сущность в Asp.net mvc Html Helper Editor для заполнителя

Если я использую сырой HTML <input /> с заполнителем, как:

<input id="TextSearch" name="TextSearch" placeholder="&#xf002;" type="text" value="" style="font-family: 'FontAwesome'" />

это выглядит как: это нормально. Но если я использую Asp.net MVC Html помощник, как:

@Html.EditorFor(m => m.TextSearch, new { placeholder = "&#xf002;", style="font-family: 'FontAwesome';" })

это выглядит как: не может отображать значок FontAwesome. Это рассматривается как строка.

Как я могу сделать это правильно, используя помощник HTML @Html.EditorFor()?

2 ответа

Решение

Для этого вам нужно использовать HttpUtility.HtmlDecode, поэтому ваш HTMLHelper должен быть таким, как показано ниже:

@Html.EditorFor(m => m.TextSearch, new { htmlAttributes = new { @PlaceHolder = HttpUtility.HtmlDecode("&#xf002;"), @Style = "font-family: 'FontAwesome'" } })

Вы передаете placeholder а также style Атрибуты HTML как additionalViewDataне htmlAttributes (увидеть EditorFor с 2-мя перегрузками здесь). Просто TextBoxFor с HttpUtility.HtmlDecode() должно работать для всех версий MVC:

@Html.TextBoxFor(m => m.TextSearch, new { @placeholder = HttpUtility.HtmlDecode("&#xf002;"), @style = "font-family: 'FontAwesome'" })

Обратите внимание, что использование htmlAttributes внутри EditorFor работает только для MVC 5.1 и выше. Если вы используете MVC версии 5.1+, вы должны использовать это EditorFor настройка, в противном случае используйте TextBoxFor помощник, как указано выше:

@Html.EditorFor(m => m.TextSearch, new { htmlAttributes = new { @placeholder = HttpUtility.HtmlDecode("&#xf002;"), @style = "font-family: 'FontAwesome'" }})

Посмотрите эту скрипку, чтобы увидеть разницу между обоими помощниками.

Другие вопросы по тегам