我正在使用 TextBoxFor 在 MVC 视图上绑定模型 ti 编辑:
@Html.TextBoxFor(m => m.Company)
假设公司名称是 Andenæs(或任何斯堪的维亚名称,如 Lønø),TextBoxFor 对其进行编码,如下图所示:
如何解决?
我正在使用 TextBoxFor 在 MVC 视图上绑定模型 ti 编辑:
@Html.TextBoxFor(m => m.Company)
假设公司名称是 Andenæs(或任何斯堪的维亚名称,如 Lønø),TextBoxFor 对其进行编码,如下图所示:
如何解决?
TextBoxFor 编码
你很困惑TextBoxFor
和LabelFor
。帮助器LabelFor
(您在此处使用的)只是将模型属性的值直接输出到 HTML 页面。为了安全地做到这一点,它需要对这个值进行 HTML 编码。这就是你看到这个的原因Andenæs
。这是安全的,浏览器会正确呈现它。HTML 旨在由浏览器而非人类读取和解释,因此只要查看浏览器的人看到正确的文本就可以了。
话虽这么说,没有办法改变内置助手的这种行为。如果您需要实现这一点,您将不得不编写自定义助手并手动编码所有内容(完全不推荐)。
更新:
根据您在评论部分中显示的内容,您无处使用任何 TextBoxFor 助手。您正在使用一些自定义编辑器模板,您在其中硬编码了输入字段并错误地编码了值:
<input type="text" class="string @ViewData.ModelMetadata.PropertyName" value="@ViewData.TemplateInfo.FormattedModelValue" name="@string.Format("{0}-{1}", ViewData.ModelMetadata.ContainerType.Name, ViewData.ModelMetadata.PropertyName)" id="@ViewData.TemplateInfo.HtmlFieldPrefix" dafault-value="@ViewData.ModelMetadata.DisplayName" />
而您应该使用 TextBox 帮助器来确保正确编码该值:
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new {
id = ViewData.TemplateInfo.HtmlFieldPrefix,
@class = "string " + ViewData.ModelMetadata.PropertyName",
dafault_value = ViewData.ModelMetadata.DisplayName
}
)