WebForms UnobtrusiveValidationMode需要一个用于jquery的ScriptResourceMapping

在我的Web应用程序中,我收到以下错误:

WebForms UnobtrusiveValidationMode需要’jquery’的ScriptResourceMapping。 请添加一个名为jquery的ScriptResourceMapping(区分大小写)。

描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

exception详细信息:System.InvalidOperationException:WebForms UnobtrusiveValidationMode需要ScriptResourceMapping用于’jquery’。 请添加一个名为jquery的ScriptResourceMapping(区分大小写)。

我该如何解决?

从.NET 4.5开始,Validators使用数据属性和有界Javascript来执行validation工作,因此.NET希望您为jQuery添加脚本引用。

有两种方法可以解决错误:


禁用UnobtrusiveValidationMode

将其添加到web.config:

      

它将在以前的.NET版本中工作,并且只需将必要的Javascript添加到页面中以使validation器工作,而不是在jQuery文件中查找代码。 这实际上是常见的解决方案。


另一个解决方案是注册脚本:

在Global.asax Application_Start添加映射到您的jQuery文件路径:

 void Application_Start(object sender, EventArgs e) { // Code that runs on application startup ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/scripts/jquery-1.7.2.min.js", DebugPath = "~/scripts/jquery-1.7.2.min.js", CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.min.js", CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.js" }); } 

来自MSDN的一些细节:

ValidationSettings:UnobtrusiveValidationMode指定ASP.NET如何全局启用内置validation器控件,以便将不显眼的JavaScript用于客户端validation逻辑。

如果此键值设置为“无”[默认],则ASP.NET应用程序将使用4.5之前的行为(页面中的JavaScript内联)用于客户端validation逻辑。

如果此键值设置为“WebForms”,则ASP.NET将使用HTML5数据属性和来自添加的脚本引用的后期绑定JavaScript作为客户端validation逻辑。

要在特定页面上修复此问题,需要在页面加载时设置一些validation设置。 在Page_Load()方法中写下面的代码:

 protected void Page_Load(object sender, EventArgs e) { ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; } 

它在.NET 4.5中为我工作

Jaqen H’ghar是现货。 第三种方式是:

  1. 转到管理NuGet包
  2. 安装Microsoft.jQuery.Unobtrusive.Validation
  3. 打开Global.asax.cs文件并在Application_Start方法中添加此代码

在应用程序启动时运行的代码:

 ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/Scripts/jquery.validate.unobtrusive.min.js", DebugPath = "~/Scripts/jquery.validate.unobtrusive.min.js" }); 

我认为这是此类型错误的最佳解决方案。 所以请添加以下行。 当我使用MSVS 2015时,它也可以使用我的代码。





右键单击您的网站转到属性页并选中辅助functionvalidation下的复选框,单击确定。 运行网站。

该exception表示不显眼的JavaScriptvalidation模式存在问题。 此问题不是特定于Sitefinity的,当项目以.NET 4.5框架为目标并且web.config文件中未启用4.5之前的validation时,会出现在任何标准ASP.NET应用程序中。

打开web.config文件并确保应用程序设置中存在ValidationSettings:UnobtrusiveValidationMode: