首页 新闻 搜索 专区 学院

ASP.NET MVC3 Html.TextBox给onclick指定带参数的方法时的编码问题

0
悬赏园豆:100 [已解决问题] 解决于 2013-10-11 10:53

新建一个MVC3空白项目,添加一个Controller,为Index方法添加一个视图,在视图中只写下一行代码:

@Html.TextBox("txtEmail", "", new { onclick = "alert('abc')" })

运行后,查看网页源代码,生成的HTML是这样的:

<input id="txtEmailname="txtEmailonclick="alert(&#39;abc&#39;)type="textvalue="" />

把'编码成了&#39;  这导致onclick方法直接失效。

把项目拷至别的电脑上测试生成的都是正确的结果,但在我电脑上生成的是上面的结果,这是不是MVC3的一个BUG? 另外,我新建了一个MVC4项目,也有这个问题。

如果不是bug,那又是什么原因造成的呢?操作系统是正版windows 8 专业版,环境是Visual Studio Ultimate 2012,版本11.0.60610.01 Update 3

 

项目地址:http://pan.baidu.com/share/link?shareid=2762057868&uk=2047611729&qq-pf-to=pcqq.c2c

nocture的主页 nocture | 初学一级 | 园豆:112
提问于:2013-10-10 00:09
< >
分享
最佳答案
0

会自动编码,采用如下写法即可:

@Html.TextBox("txtEmail", "", new { onclick = Html.Raw("alert('abc')") })

收获园豆:60
幻天芒 | 高人七级 |园豆:36790 | 2013-10-10 09:40

奇怪,我没重现你的问题,mvc3,不管加不加Html.Raw,都没被编码。

幻天芒 | 园豆:36790 (高人七级) | 2013-10-10 09:48

@幻天芒: 首先谢谢你的回答。Html.Raw方法我早就试过了,还是会被编码成&#39;

nocture | 园豆:112 (初学一级) | 2013-10-10 16:13

@nocture: 我的好奇的是,引发这个问题的条件~

幻天芒 | 园豆:36790 (高人七级) | 2013-10-10 18:48

@幻天芒: 虽然会把'号编码成&#39;但并不影响方法的正常运行

nocture | 园豆:112 (初学一级) | 2013-10-11 10:53

@nocture: 这样也算合理。

幻天芒 | 园豆:36790 (高人七级) | 2013-10-11 13:04
其他回答(1)
0

并不是bug,而是为了防止注入攻击而做的防范。

你可以试试把'abc'放到一个变量中

收获园豆:20
chutianshu_1981 | 园豆:43 (初学一级) | 2013-10-10 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册