Как поместить html-сущность в Asp.net mvc Html Helper Editor для заполнителя
Если я использую сырой HTML <input />
с заполнителем, как:
<input id="TextSearch" name="TextSearch" placeholder="" type="text" value="" style="font-family: 'FontAwesome'" />
это выглядит как: это нормально. Но если я использую Asp.net MVC Html помощник, как:
@Html.EditorFor(m => m.TextSearch, new { placeholder = "", style="font-family: 'FontAwesome';" })
это выглядит как: не может отображать значок FontAwesome. Это рассматривается как строка.
Как я могу сделать это правильно, используя помощник HTML @Html.EditorFor()
?
2 ответа
Для этого вам нужно использовать HttpUtility.HtmlDecode, поэтому ваш HTMLHelper должен быть таким, как показано ниже:
@Html.EditorFor(m => m.TextSearch, new { htmlAttributes = new { @PlaceHolder = HttpUtility.HtmlDecode(""), @Style = "font-family: 'FontAwesome'" } })
Вы передаете placeholder
а также style
Атрибуты HTML как additionalViewData
не htmlAttributes
(увидеть EditorFor
с 2-мя перегрузками здесь). Просто TextBoxFor
с HttpUtility.HtmlDecode()
должно работать для всех версий MVC:
@Html.TextBoxFor(m => m.TextSearch, new { @placeholder = HttpUtility.HtmlDecode(""), @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(""), @style = "font-family: 'FontAwesome'" }})
Посмотрите эту скрипку, чтобы увидеть разницу между обоими помощниками.