1

我正在使用 TextBoxFor 在 MVC 视图上绑定模型 ti 编辑:

@Html.TextBoxFor(m => m.Company)

假设公司名称是 Andenæs(或任何斯堪的维亚名称,如 Lønø),TextBoxFor 对其进行编码,如下图所示:

解码问题

如何解决?

4

1 回答 1

0

TextBoxFor 编码

你很困惑TextBoxForLabelFor。帮助器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
    }
)
于 2013-06-07T09:46:35.170 回答