在做牛腩新闻发布系统的时候遇到了这个错误,在好友贵贵的帮助下成功解决。分享给大家。
错误:
原因分析:
VisualStudio 2012(或2013) WebForm 4.5 开发中,很多控件默认Enable了 Unobtrusive ValidationMode(所谓Unobtrusive Validation,就是一种隐式的验证方式)的属性(和jquery的引用相关),但并未对其进行赋值, Programmer必须手动对其进行设置。比如,在进行数据验证时使用的各种validator(今天使用的RequiredFieldValidator控件),以及进行authorization及authenication设置时,由于需要在前端调用jquery来进行身份验证,都默认Enable了 Unobtrusive ValidationMode。如果不对该属性进行配置,将会产生ERROR。
解决方案:
一、在程序允许的情况下,降低.Framework的版本,具体方法如下:
<span style="font-size:18px;"><!--修改前-->
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" /> <!—将其删除-->
</system.web>
<!--修改后-->
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web></span>
二、更改Web.config配置文件设置Unobtrusive ValidationMode的类型,具体方法如下:
<span style="font-size:18px;"><!--修改前-->
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<!--修改后-->
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings></span>
三、这种方法可能有些复杂,但也是可行的。具体方法如下:
1.在网站根目录下新建一scripts文件夹,向里边添加jquery-1.7.2.min.js和jquery-1.7.2.js(可根据自己需要使用不同的版本),
2.在根目录下添加全局应用程序类Global.asax文件,在Application_Start事件中添加如下代码:
<span style="font-size:18px;">ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
{
Path = "~/scripts/jquery-1.7.2.min.js",
DebugPath = "~/scripts/jquery-1.7.2.js",
CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.2.min.js",
CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.2.js"
});</span>
查了很多资料,都一一试了试,这三种方法是可行的,希望能够帮到大家,嘿嘿!