1

<input />如果我使用带有占位符的原始 html ,例如:

<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 helper 正确呈现它@Html.EditorFor()

4

2 回答 2

2

您将placeholderstyleHTML 属性传递为additionalViewData,而不是htmlAttributes(请参阅此处EditorFor的 2 个重载)。一个简单的 with应该适用于所有 MVC 版本:TextBoxForHttpUtility.HtmlDecode()

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

请注意,htmlAttributesinside的使用EditorFor 仅适用于 MVC 5.1 及更高版本。如果你使用的是 MVC 5.1+,你应该使用这个EditorFor设置,否则使用TextBoxFor上面提到的 helper:

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

这个小提琴看看两个助手的区别。

于 2018-12-05T04:21:22.053 回答
2

您需要为此使用HttpUtility.HtmlDecode,因此您的 HTMLHelper 应该如下所示,

@Html.EditorFor(m => m.TextSearch, new { htmlAttributes = new { @PlaceHolder = HttpUtility.HtmlDecode("&#xf002;"), @Style = "font-family: 'FontAwesome'" } })
于 2018-12-04T15:49:37.650 回答