我正在编写自动生成HTML的代码,我希望它能正确编码.
假设我正在生成指向以下网址的链接:
http://www.google.com/search?rls=en&q=stack+overflow
Run Code Online (Sandbox Code Playgroud)
我假设所有属性值都应该是HTML编码的.(如果我错了,请纠正我.)这意味着如果我将上面的URL放入锚标签,我应该将&符编码为&,如下所示:
<a href="http://www.google.com/search?rls=en&q=stack+overflow">
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
&符号是否应该在HTML属性中编码的唯一字符?
众所周知,这不会通过验证:
<a href="http://domain.com/search?q=whatever&lang=en"></a>
Run Code Online (Sandbox Code Playgroud)
因为&符号应该是&.这是验证失败的直接链接.
这个人列出了一堆应编码的字符,但他错了.如果你编码http://href中的第一个"/" 将无法正常工作.
在ASP.NET中,是否已经构建了一个帮助方法来处理这个问题?像Server.UrlEncode和HtmlEncode这样的东西显然不起作用 - 这些用于不同的目的.
我可以构建我自己的简单扩展方法(如.ToAttributeView()),它可以进行简单的字符串替换.