ASP.Net 2012使用jQuery进行不引人注目的验证

Jup*_*aol 56 c# asp.net

我正在玩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来禁用此功能.

  • 我从一个新的Internet MVC4项目开始,添加了N2 CMS.我收到了这个错误,这个答案解决了我的问题.谢谢! (5认同)
  • 但是现在我正面临另一个问题,它关闭我的验证现在很热,打开验证 (3认同)

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

除了ScriptResourceDefinitionGlobal.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" :ScriptReferenceScriptManager

       <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"之前自动添加它) - 客户端验证将完全被破坏:

http://connect.microsoft.com/VisualStudio/feedback/details/748064/unobtrusive-validation-breaks-with-a-script-manager-on-the-page

您根本不需要任何这些NuGet包,也不需要任何其他ScriptReference(其中一些只是重复,甚至是完全不必要的膨胀 - 因为它们是ASP.Net在需要时自动添加的)在您的博客中提到.

编辑:你也不需要显式添加"WebForms.js"(从示例中删除它) - 如果你这样做,LoadSuccessExpression它将因某些原因被忽略


小智 5

所有验证器错误都已由此解决

 <appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
Run Code Online (Sandbox Code Playgroud)

错误必须消失享受....