我正在将一个旧项目从MVC 1.0升级到MVC 3.0(是的,它已经老了),我遇到了一个调用HtmlHelper.Button(...,onClickMethod,...)HTML-的问题将单引号编码为'
如果onClickMethod只是在javascript中调用的方法的名称,我可以看到这不会是一个问题,但这就是我们使用它的方式:
return helper.Button(name, buttonText, HtmlButtonType.Button,
string.Format("window.location='{0}'", url));
现在显然已经破了。
有没有办法绕过这种编码?我可以通过将方法的返回类型更改为字符串来进行黑客攻击,并执行:
return string.Format(helper.Button(name, buttonText, HtmlButtonType.Button,
"window.location={0}").ToString(), "'" + url + "'");
但这或多或少是一种黑客攻击,而不是优雅。
答案 0 :(得分:2)
'
应该有效。即使文档流包含编码值,浏览器在构建DOM时也会对其进行编码。您可以使用DOM检查工具来查看自己。
如果我在页面上放置以下内容,我会在点击时看到警告框:
<input type="button" onclick="alert('Hello');" />
答案 1 :(得分:1)
您可以使用URI类将html代码转换为常规文本
Uri.UnescapeDataString(string);