development

jQuery를 사용한 ASP.Net 2012 Unobtrusive Validation

big-blog 2021. 1. 5. 21:03
반응형

jQuery를 사용한 ASP.Net 2012 Unobtrusive Validation


Visual Studio 2012를 사용하고 있었고 빈 ASP.Net 웹 응용 프로그램을 만들었습니다 . 기존 유효성 검사기 컨트롤 을 새 페이지 에 추가하려고하면 다음 오류가 발생합니다.

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>

ValidationSettings : UnobtrusiveValidationMode 값에 대한 잘못된 정보가 많은 것 같습니다. 비활성화 하려면 다음을 수행해야합니다.

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

이 기능을 비활성화하려면 WebForms가 아닌 None이라는 단어를 사용해야합니다.


이것은 MS Connect 포럼공식 Microsoft 답변입니다 . 아래 관련 텍스트를 복사하고 있습니다.

.NET 4.5를 대상으로하는 경우 Unobtrusive Validation이 기본적으로 활성화됩니다. 프로젝트에 jQuery가 있어야하고 jQuery를 제대로 등록하려면 Global.asax에 다음과 같은 내용이 있어야합니다.

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

ValidationSettings : UnobtrusiveValidationMode 에 대한 추가 정보

ASP.NET에서 기본 제공 유효성 검사기 컨트롤이 클라이언트 쪽 유효성 검사 논리에 눈에 띄지 않는 JavaScript를 사용하도록 전역 적으로 설정하는 방법을 지정합니다.

유형 : UnobtrusiveValidationMode

기본값 : 없음

설명 :이 키 값이 "None" [기본값]으로 설정되면 ASP.NET 응용 프로그램은 클라이언트 쪽 유효성 검사 논리에 대해 4.5 이전 동작 (페이지의 JavaScript 인라인)을 사용합니다. 이 키 값이 "WebForms"로 설정 되면 ASP.NET은 클라이언트 쪽 유효성 검사 논리에 대해 추가 된 스크립트 참조에서 HTML5 데이터 특성 및 후기 바인딩 된 JavaScript를 사용합니다 .

예:

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

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

당신은 또한 전용 "WebUIValidation.js"를 추가 명시 적으로 필요 "JQuery와" 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>

If you add it before "jquery", or if you don't add any or both of them at all (ASP.Net will then automatically add it before "jquery") - the client validation will be completely broken:

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

You don't need any of those NuGet packages at all, nor any additional ScriptReference (some of which are just duplicates, or even a completely unnecessary bloat - as they are added automatically by ASP.Net if needed) mentioned in your blog.

EDIT: you don't need to explicitly add "WebForms.js" as well (removed it from the example) - and if you do, its LoadSuccessExpression will be ignored for some reason


All the validator error has been solved by this

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

Error must be vanished enjoy....


Add a reference to Microsoft.JScript in your application in your web.config as below :

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

Just copy & paste any JQuery file in your project and add a Global.asax file and modify it as below:

I just paste the JQuery file in my project and add a reference in Global.asax file:

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

In the Nuget Package manager search for AspNet.ScriptManager.jQuery instead of jquery. THat way you will not have to set the mappings yourself and the project will work with the click of a simple install.

Or disable the Unobtrusive Validation by adding this line to the Configuration tag of the web.config file in the project.

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

In "configuration file" instead this lines:

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

by this lines:

<compilation debug="true" targetFramework="4.0" />
<httpRuntime targetFramework="4.0" />

This error because in version 4.0 library belong to "asp:RequiredFieldValidator" exist but in version 4.5 library not exist so you need to add library by yourself


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

this line was not in my WebConfig so : I simple solved this by downgrading targetting .Net version to 4.0 :)


in visual studio 2012 in the web.config change the targetFramework=4.5 to targetFramework=4.0


I suggest to instead this lines

<div>
    <asp:TextBox runat="server" ID="username" />
    <asp:RequiredFieldValidator ErrorMessage="The username is required" ControlToValidate="username" runat="server" Text=" - Required" />
</div>

by this line

<div>
    <asp:TextBox runat="server" ID="username" required />
</div>

ReferenceURL : https://stackoverflow.com/questions/12452109/asp-net-2012-unobtrusive-validation-with-jquery

반응형