ASP.Net 2012与jQuery的不显眼的validation
我正在玩Visual Studio 2012,并创build了一个空的ASP.Net Web应用程序 ,当我试图将传统的validation控件添加到新的页面时,会发生此错误:
WebForms UnobtrusiveValidationMode需要一个ScriptResourceMapping作为'jquery'。 请添加一个名为jquery(区分大小写)的ScriptResourceMapping。
有什么步骤来解决它?
这是我的页面标记:
<asp:Panel runat="server" ID="pnlUsername" GroupingText="Username settings"> <div> <asp:Label ID="usernameLabel" Text="Please enter your username" runat="server" AssociatedControlID="username" /> </div> <div> <asp:TextBox runat="server" ID="username" /> <asp:RequiredFieldValidator ErrorMessage="The username is required" ControlToValidate="username" runat="server" Text=" - Required" /> </div> </asp:Panel>
好像有很多有关ValidationSettings:UnobtrusiveValidationMode值的错误信息。 要禁用它,您需要执行以下操作。
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
单词None,而不是WebForms应该用来禁用这个function。
这是来自MS Connect论坛的官方Microsoft回答 。 我正在复制下面的相关文字:
当针对.NET 4.5 Unobtrusivevalidation默认启用。 你需要在你的项目中有jQuery,并在Global.asax中有这样的东西来正确注册jQuery:
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/scripts/jquery-1.4.1.min.js", DebugPath = "~/scripts/jquery-1.4.1.js", CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.min.js", CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.js" });
用您正在使用的版本replacejQuery的版本。
您也可以通过删除以下行来在web.config中禁用此新function:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />
更多关于ValidationSettings的信息:UnobtrusiveValidationMode
指定ASP.NET如何全局启用内置的validation器控件,以便将不显眼的JavaScript用于客户端validation逻辑。
types:UnobtrusiveValidationMode
默认值:无
备注:如果此键值设置为“无” [默认值],则ASP.NET应用程序将使用4.5版之前的行为 (页面中的JavaScript内联)用于客户端validation逻辑。 如果此键值设置为“WebForms” ,则ASP.NET将使用HTML5数据属性和来自添加的脚本引用的延迟JavaScript,以用于客户端validation逻辑。
例:
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
除了Global.asax中所需的“jquery” ScriptResourceDefinition
(使用你自己的path):
protected void Application_Start(object sender, EventArgs e) { ScriptManager.ScriptResourceMapping.AddDefinition( "jquery", new ScriptResourceDefinition { Path = "/static/scripts/jquery-1.8.3.min.js", DebugPath = "/static/scripts/jquery-1.8.3.js", CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js", CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js", CdnSupportsSecureConnection = true, LoadSuccessExpression = "jQuery" }); }
另外您只需要在ScriptManager
“jquery” ScriptReference
之后显式添加“WebUIValidation.js”(最重要的部分):
<asp:ScriptManager runat="server" EnableScriptGlobalization="True" EnableCdn="True"> <Scripts> <asp:ScriptReference Name="jquery" /> <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" /> </Scripts> </asp:ScriptManager>
如果你在“jquery”之前添加它,或者如果你不添加任何一个或两个都( ASP.Net
然后将自动添加“jquery”之前) – 客户端validation将被彻底打破:
你根本不需要任何这些NuGet包,也不需要在你的博客中提到的任何额外的ScriptReference
(其中一些只是重复的,甚至是完全不必要的膨胀 – 因为它们是由ASP.Net
自动添加的)。
编辑:你不需要明确地添加“WebForms.js”(从示例中删除它) – 如果你这样做,它的LoadSuccessExpression
将被忽略由于某种原因
在您的web.config
的应用程序中添加对Microsoft.JScript
的引用,如下所示:
<configuration> <system.web> <compilation debug="true" targetFramework="4.5"> <assemblies> <add assembly="Microsoft.JScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> </assemblies> </compilation> <httpRuntime targetFramework="4.5"/> </system.web> <appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="none"/> </appSettings> </configuration>
所有的validation错误已经被解决了
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
错误必须消失享受….
只需复制并粘贴项目中的任何JQuery文件,然后添加一个Global.asax
文件并修改它,如下所示:
我只是将JQuery文件粘贴到我的项目中,并在Global.asax文件中添加引用:
protected void Application_Start(object sender, EventArgs e) { ScriptManager.ScriptResourceMapping.AddDefinition( "jquery", new ScriptResourceDefinition { Path = "~/jquery-1.10.2.js", DebugPath = "~/jquery-1.10.2.js", CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js", CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js", CdnSupportsSecureConnection = true, LoadSuccessExpression = "jQuery" }); }
在Nuget包pipe理器中searchAspNet.ScriptManager.jQuery而不是jquery。 这样你就不需要自己设置映射,项目只需点击一下简单的安装即可。
或者通过将此行添加到项目的web.config文件的configuration标签中,禁用“不显眼validation”(Unobtrusive Validation)。
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />
这行不在我的WebConfig所以:我简单地解决了这个降级目标。净版本为4.0 🙂
在web.config的visual studio 2012中将targetFramework = 4.5更改为targetFramework = 4.0
在“configuration文件”,而不是这行:
<compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" />
由此行:
<compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0" />
这个错误,因为在版本4.0库属于“asp:RequiredFieldValidator”存在,但在版本4.5库不存在,所以你需要自己添加库
我build议改为这行
<div> <asp:TextBox runat="server" ID="username" /> <asp:RequiredFieldValidator ErrorMessage="The username is required" ControlToValidate="username" runat="server" Text=" - Required" /> </div>
由这条线
<div> <asp:TextBox runat="server" ID="username" required /> </div>
- 无法更新EntitySet – 因为它有一个DefiningQuery并且不存在<UpdateFunction>元素
- oAuth ASP.NET成员资格提供程序
- 在页面之间传递数据的最佳实践
- 在SQL Server 2008中启用Service Broker
- DateTime.Parse(“2012-09-30T23:00:00.0000000Z”)总是转换为DateTimeKind.Local
- 如何获得JavaScript / jQuery Intellisense在Visual Studio 2008中工作?
- 具有多个路由值的ASP.NET MVC URL路由
- 什么是限制我的ASP.NET应用程序可以对Web服务进行同时连接的数量?
- ASP.NET Excel导出编码问题