我在ASP.NET MVC应用程序中有一个textarea,用户可以在其中键入一些文本.当我向用户显示文本时,我Html.Encode
用来防止恶意输入.问题是用户可以键入西班牙语,也许他会输入año
并将其Encode
转换为año
.我该如何防止这种情况?
编辑:在生成的HTML中,我看到:
a1 'a1' Camaño
在页面的后面我有这个,这次显示是正确的:
a1 'a1' Camaño
第一个是这样生成的:
<%= Html.RouteLink(Html.Encode(Model.NAME), ...... %>
第二个是这样的:
<%= Html.Encode(Model.NAME)%>
所以我的猜测是问题在于Html.RouteLink
.
你是不是偶然编码了两次?
例如,如果您在服务器端以编程方式设置Textarea的内容,它将在渲染时自动编码内容.
尝试查看textarea的原始HTML输出.
通常当你将转义符放在textarea内容中时,它应该在textarea中显示解码(显示为预期的非转义字符).
所以它可能是一个意外的Html.Encode问题两次不必要的问题.
如果您的数据已经被转义,您可能希望在将其放入textarea之前取消转义(Html.Decode).