ASP.NET MVC 中的 HTML 编码不完美?
我正在使用 asp mvc 3。当我使用默认的 html-helpers 构建视图时,标签属性中的 html 编码存在问题:“大于”符号未编码。
所以这段代码
<%: Html.TextBox("TestText", "<Test>") %>
产生这个输出
<input id="TestText" name="TestText" type="text" value="<Test>" />
是否有任何原因导致值属性未完全编码或者这是一个错误? 或者有什么方法可以在标签属性中使用完整的编码?
谢谢, 迈克尔
I'm using the asp mvc 3. When I build my views using the default html-helpers there is a problem with html-encoding in tag-attributes: The "greater-than"-sign isn't encoded.
So this code
<%: Html.TextBox("TestText", "<Test>") %>
produces this output
<input id="TestText" name="TestText" type="text" value="<Test>" />
Is there any reason why the value-attribute isn't full encoded or is this a bug?
Or is there any way how to use a full encoding even in tag-attributes?
Thanx,
Michael
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您误解了
<%:
标记。<%:
标记仅对普通的string
进行编码,而不是对Html.TextBox
帮助器返回的HtmlString
进行编码。示例:
两个语句都返回与问题中提到的相同的文本值。现在考虑一下这个说法。
该语句进行编码,就像现在传递普通字符串一样。
编辑:
检查MVC的源代码后,HttpUtility.HtmlAttributeEncode 在后台调用。它至少将字符串转换为 HTML 编码的字符串。
you misunderstood the
<%:
tag. The<%:
tag only encodes normalstring
, notHtmlString
as returned byHtml.TextBox
helper.Example:
Both statements return the same text value as mentioned in question. Now consider this statement.
This statement encodes, as now normal string is passed.
EDIT:
After checking the source code of MVC, HttpUtility.HtmlAttributeEncode is called under the hood. It minimally converts a string to an HTML-encoded string.
“<测试>”正在被 HTML 编码。大于号字符“>”本身是无害的,这就是为什么它没有转换成 >
"<test>" is being HTML encoded. The greater-than character '>' by itself is harmless, which is why it wasn't converted into >