我使用TextBoxFor在MVC视图上绑定模型ti编辑:
@Html.TextBoxFor(m => m.Company)
假设公司名称是Andenæs(或任何scandvian名称,如Lønø),TextBoxFor将其编码为如下截图:
如何解决这个问题?
答案 0 :(得分:0)
TextBoxFor encoded
您感到困惑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
}
)