programing

ASP.Net 2012 jQuery를 통한 중단 없는 검증

topblog 2023. 8. 11. 21:26
반응형

ASP.Net 2012 jQuery를 통한 중단 없는 검증

Visual Studio 2012를 사용하다가 ASP를 만들었습니다.Net Web Application에서 새 페이지에 기존 검증자 컨트롤을 추가하려고 하면 다음 오류가 발생합니다.

WebForms 방해되지 않는 유효성 검사 모드에는 '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>

유효성 검사 설정에 대한 잘못된 정보가 많은 것 같습니다.방해되지 않는 유효성 검사 모드 값입니다.비활성화하려면 다음을 수행해야 합니다.

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

이 기능을 사용하지 않으려면 WebForms가 아닌 None을 사용해야 합니다.

이것은 MS Connect 포럼의 Microsoft 공식 답변입니다.아래 관련 글을 복사합니다 :-

대상으로 할 때.NET 4.5 방해되지 않는 유효성 검사는 기본적으로 활성화되어 있습니다.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" />

유효성 검사 설정에 대한 추가 정보:방해되지 않는 유효성 검사 모드

ASP 방법을 지정합니다.NET은 전 세계적으로 내장된 검증기 컨트롤을 사용하여 클라이언트 측 검증 로직에 방해가 되지 않는 JavaScript를 사용할 수 있도록 합니다.

유형: 방해되지 않는 유효성 검사 모드

기본값: 없음

비고: 이 키 값이 "없음" [기본값]으로 설정된 경우 ASP.NET 응용 프로그램은 클라이언트 측 유효성 검사 로직에 대해 4.5 이전 동작(페이지 내의 JavaScript 인라인)을 사용합니다.이 키 값이 "WebForms"로 설정된 경우 ASP.NET은 클라이언트 측 유효성 검사 로직을 위해 추가된 스크립트 참조의 HTML5 데이터 속성late bound JavaScript를 사용합니다.

예:

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

필요한 "jquery" 이외의 항목ScriptResourceDefinitionGlobal.asax에서(사용자 고유 경로 사용):

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

또한 "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>

"jquery" 앞에 추가하거나 둘 다 추가하지 않은 경우 (ASP.Net그러면 "jquery" 앞에 자동으로 추가됨) - 클라이언트 유효성 검사가 완전히 깨집니다.

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

인 NuGet 패키지는 전혀ScriptReference 중 는 단지 완전히 불필요한. - - 일부는자팽한불추창니때로다가문기되으필동완전심지나어거단지중복이▁(▁(다ally그▁by▁automatic▁as▁they니at때▁added▁-문입some,▁are▁just▁complete▁a▁oficates▁are▁which▁dupl▁even▁blo▁orary추ly▁unnecess)에 의해 자동으로 추가되기 때문입니다.ASP.Net필요한 경우)가 블로그에서 언급되었습니다.

편집: "WebForms.js"도 명시적으로 추가할 필요가 없습니다(예시에서 제거됨). 추가할 경우,LoadSuccessExpression입니다.

이를 통해 모든 검증자 오류가 해결되었습니다.

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

실수는 사라져야 합니다. 즐기십시오...

에 대한 참조를 합니다.Microsoft.JScript에서의 에.web.config아래와 같이:

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

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 Package Manager에서 AsNet을 검색합니다.스크립트 관리자.jQuery 대신 jQuery.이렇게 하면 직접 매핑을 설정할 필요가 없으며 프로젝트는 단순 설치 클릭만으로 작동합니다.

또는 프로젝트에서 web.config 파일의 구성 태그에 이 줄을 추가하여 방해받지 않는 유효성 검사를 사용하지 않도록 설정합니다.

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

대신 "구성 파일"에서 다음 행을 사용합니다.

<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 라이브러리에는 없으므로 직접 라이브러리를 추가해야 합니다.

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

이 줄은 내 WebConfig에 없었기 때문에: 나는 간단히 타겟팅을 다운그레이드하여 이것을 해결했습니다.넷 버전을 4.0으로 :)

web.config의 visual studio 2012에서 targetFramework= 4.5를 targetFramework= 4.0으로 변경합니다.

대신 이 대사를 제안합니다.

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

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

반응형