我正在玩Visual Studio 2012,我创建了一个空的ASP.Net Web应用程序,当我尝试将传统的验证器控件添加到新页面时,会发生以下错误:
WebForms UnobtrusiveValidationMode需要'jquery'的ScriptResourceMapping.请添加一个名为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>
Run Code Online (Sandbox Code Playgroud)
rla*_*oni 56
似乎有很多关于ValidationSettings:UnobtrusiveValidationMode值的错误信息.要禁用它,您需要执行以下操作.
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
Run Code Online (Sandbox Code Playgroud)
应使用单词None,而不是WebForms来禁用此功能.
Jag*_*mag 30
这是Microsoft Connect论坛中Microsoft的官方回答.我正在复制以下相关文字: -
定位.NET 4.5默认情况下启用Unobtrusive Validation.您需要在项目中使用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"
});
Run Code Online (Sandbox Code Playgroud)
用您正在使用的版本替换jQuery的版本.
您还可以通过删除以下行在web.config中禁用此新功能:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />
Run Code Online (Sandbox Code Playgroud)
Kap*_*wal 26
有关ValidationSettings的更多信息:UnobtrusiveValidationMode
指定ASP.NET如何全局启用内置验证器控件,以便将不显眼的JavaScript用于客户端验证逻辑.
键入:UnobtrusiveValidationMode
默认值:无
备注:如果此键值设置为"无" [默认],则ASP.NET应用程序将使用4.5之前的行为(页面中的JavaScript内联)用于客户端验证逻辑.如果此键值设置为"WebForms",则ASP.NET将使用HTML5数据属性和来自添加的脚本引用的后期绑定JavaScript作为客户端验证逻辑.
例:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
Nik*_*vić 17
除了ScriptResourceDefinition
Global.asax中所需的"jquery" (使用您自己的路径):
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"
});
}
Run Code Online (Sandbox Code Playgroud)
您还需要在(最重要的部分)中的"jquery" 之后显式添加"WebUIValidation.js" :ScriptReference
ScriptManager
<asp:ScriptManager runat="server" EnableScriptGlobalization="True" EnableCdn="True">
<Scripts>
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" />
</Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)
如果你在"jquery"之前添加它,或者你根本没有添加任何一个或两个(ASP.Net
然后在"jquery"之前自动添加它) - 客户端验证将完全被破坏:
您根本不需要任何这些NuGet包,也不需要任何其他ScriptReference
(其中一些只是重复,甚至是完全不必要的膨胀 - 因为它们是ASP.Net
在需要时自动添加的)在您的博客中提到.
编辑:你也不需要显式添加"WebForms.js"(从示例中删除它) - 如果你这样做,LoadSuccessExpression
它将因某些原因被忽略
小智 5
所有验证器错误都已由此解决
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
Run Code Online (Sandbox Code Playgroud)
错误必须消失享受....
归档时间: |
|
查看次数: |
151247 次 |
最近记录: |