c# - net概念 - ASP.Net 2012使用jQuery进行不引人注目的验证



asp是什么 (8)

似乎有很多关于ValidationSettings:UnobtrusiveValidationMode值的错误信息。 要禁用它,您需要执行以下操作。

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

应使用单词None,而不是WebForms来禁用此功能。

https://src-bin.com

我正在玩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>

Answer #1

只需在项目中复制并粘贴任何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"
        });
    }

Answer #2

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>

Answer #3

在Nuget包管理器中搜索AspNet.ScriptManager.jQuery而不是jquery。 这样您就不必自己设置映射,只需单击一个简单的安装即可使用该项目。

或者通过将此行添加到项目中web.config文件的Configuration标记来禁用Unobtrusive Validation。

  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

Answer #4

我建议改为这一行

<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>

Answer #5

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

 <appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>

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


Answer #6

这是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"
    });

用您正在使用的版本替换jQuery的版本。

您还可以通过删除以下行在web.config中禁用此新功能:

<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />

Answer #7

除了Global.asax中所需的“jquery” ScriptResourceDefinition (使用您自己的路径):

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

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将由于某种原因被忽略





asp.net