毫无疑问这是一个bug,很多用户升级到rc时都遇到了这个问题,以前很正常的提交只要带有html标签就被报"...从客户端中检测到有潜在危险的 request.form 值。"即使在web.config中禁用页面验证也会出现这个问题.
成因和部分解决方法见:
另一解决方法见:
http://weblogs.asp.net/imranbaloch/archive/2010/11/14/mvc-3-rc-bug-and-quick-solution.aspx
我采用后者的解决方案:
1,后台页面中增加using System.Web.Helpers;的引用
2,修改请求的httppost方法:
之前:
1 public ActionResult ActionA(FormCollection form1)
2 {
3 return View();
4 }
5 public ActionResult ActionB(int i,FormCollection form)
6 {
7 return View();
8 }
9 public ActionResult ActionC(int i, FormCollection formABC, string j, [Bind(Include = "Name,Address")] Student s)
10 {
11 return View();
12 }
13 public ActionResult ActionD(int i, string j,FormCollection f , string k, string t)
14 {
15 return View();
16 }
17 public ActionResult ActionE(FormCollection form123, string t, string t2)
18 {
19 return View(new Student { Age = 30, Name = "Akbar" });
20 }
2 {
3 return View();
4 }
5 public ActionResult ActionB(int i,FormCollection form)
6 {
7 return View();
8 }
9 public ActionResult ActionC(int i, FormCollection formABC, string j, [Bind(Include = "Name,Address")] Student s)
10 {
11 return View();
12 }
13 public ActionResult ActionD(int i, string j,FormCollection f , string k, string t)
14 {
15 return View();
16 }
17 public ActionResult ActionE(FormCollection form123, string t, string t2)
18 {
19 return View(new Student { Age = 30, Name = "Akbar" });
20 }
之后:
1 public ActionResult ActionA()
2 {
3 FormCollection form1 = new FormCollection(Request.Unvalidated().Form);
4 return View();
5 }
6 public ActionResult ActionB(int i)
7 {
8 FormCollection form = new FormCollection(Request.Unvalidated().Form);
9 return View();
10 }
11 public ActionResult ActionC(int i, string j, [Bind(Include = "Name,Address")] Student s)
12 {
13 FormCollection formABC = new FormCollection(Request.Unvalidated().Form);
14 return View();
15 }
16 public ActionResult ActionD(int i, string j, string k, string t)
17 {
18 FormCollection f = new FormCollection(Request.Unvalidated().Form);
19 return View();
20 }
21 public ActionResult ActionE( string t, string t2)
22 {
23 FormCollection form123 = new FormCollection(Request.Unvalidated().Form);
24 return View(new Student { Age = 30, Name = "Akbar" });
25 }
2 {
3 FormCollection form1 = new FormCollection(Request.Unvalidated().Form);
4 return View();
5 }
6 public ActionResult ActionB(int i)
7 {
8 FormCollection form = new FormCollection(Request.Unvalidated().Form);
9 return View();
10 }
11 public ActionResult ActionC(int i, string j, [Bind(Include = "Name,Address")] Student s)
12 {
13 FormCollection formABC = new FormCollection(Request.Unvalidated().Form);
14 return View();
15 }
16 public ActionResult ActionD(int i, string j, string k, string t)
17 {
18 FormCollection f = new FormCollection(Request.Unvalidated().Form);
19 return View();
20 }
21 public ActionResult ActionE( string t, string t2)
22 {
23 FormCollection form123 = new FormCollection(Request.Unvalidated().Form);
24 return View(new Student { Age = 30, Name = "Akbar" });
25 }
解决!应该会在正式版中除掉这个bug.
希望本文能对您有所帮助!