日期:2014-05-17  浏览次数:20380 次

弱智的MVC。
标题先吸引下,其实我是初学asp.net MVC,最近想设计个系统,用MVC框架。发现很多MVC的问题都不利于我的设计,有些设计另我非常的难过,当然也有可能是我没找到方法(本人学不久)
我用的MVC4.0

第一个:Post提交验证值的问题,如果有文本编辑器会报一个错误

从客户端(Domain_Memo="<p>432</p>
")中检测到有潜在危险的 Request.Form 值。 
说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。 


百度一下这个问题,答案一大堆,方法就是字server.web节点加上 <httpRuntime requestValidationMode="2.0" />,并且给pages节点配置上validateRequest="false"的属性,其实错误里也说明了,但是我这样配置后,无论如何也没作用,继续百度,看到一条在action上加 [ValidateInput(false)],尼玛。还真管用,一下子就好了。

 由此问题产生了,我觉得这个设计是不是太那个啥了,先置之死地而后生,
假设我的项目里有1W个Action 10W个action 几十万个action,是不是我得写几十万次,然后如果需要需要改变的话我又得重复的去改呢? 为什么不像2.0一样做成可以通过web.config开启或者关闭的呢?这样做有什么好处?我因为全部action都不需要这样的验证,故所以感到无比烦躁,望大神指点1 2.

         第二个问题其实和第一个是一样的,就是做form验证时默认的配置也是不起作用了,全部都默认不转向到指定的登录界面了,也是需要在每个action上去加个类似的属性。

           我只想问问,难道可以配置开关有什么不好的吗?这样的设计另我想放弃它继续用asp.net了。
           求!!!!!!!!指点迷津
MVC ASP.NET 框架

------解决方案--------------------
in Global.asax.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new ValidateInputAttribute(false));
}