IT

WebForms 중단 없는 유효성 검사 모드에 jquery용 ScriptResourceMapping이 필요함

itgroup 2023. 6. 22. 21:40
반응형

WebForms 중단 없는 유효성 검사 모드에 jquery용 ScriptResourceMapping이 필요함

웹 응용 프로그램에서 다음 오류가 발생합니다.

WebForms 방해되지 않는 유효성 검사 모드에는 'jquery'에 대한 ScriptResourceMapping이 필요합니다.jquery라는 이름의 ScriptResourceMapping을 추가하십시오(대소문자 구분).

설명:현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다.오류에 대한 자세한 내용과 코드에서 발생한 오류에 대한 자세한 내용은 스택 추적을 검토하십시오.

예외 세부 정보:시스템.잘못된 작업예외:WebForms 방해되지 않는 유효성 검사 모드에는 'jquery'에 대한 ScriptResourceMapping이 필요합니다.jquery라는 이름의 ScriptResourceMapping을 추가하십시오(대소문자 구분).

어떻게 해결해야 하나요?

.NET 4.5부터는 검증자가 데이터 속성을 사용하고 JavaScript를 바인딩하여 검증 작업을 수행하므로 .NET에서는 jQuery에 대한 스크립트 참조를 추가할 것으로 예상합니다.

오류를 해결하는 두 가지 방법이 있습니다.


안 함 용UnobtrusiveValidationMode:

web.config에 추가합니다.

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

이전 .NET 버전에서 작동했던 것처럼 작동하며 jQuery 파일에서 코드를 찾는 대신 검증자가 작동하도록 페이지에 필요한 JavaScript를 추가합니다.이것이 실제로 일반적인 해결책입니다.


또 다른 해결책은 스크립트를 등록하는 것입니다.

역전서.asax 에Application_Start경로에 합니다.jQuery 파일 경로:

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", 
        new ScriptResourceDefinition
        {
            Path = "~/scripts/jquery-1.7.2.min.js",
            DebugPath = "~/scripts/jquery-1.7.2.js",
            CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.min.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.js"
        });
}

MSDN의 일부 세부 정보:

유효성 검사 설정:방해되지 않는 유효성 검사 모드 - ASP.NET이 내장된 유효성 검사기 컨트롤에서 클라이언트 측 유효성 검사 로직에 방해되지 않는 JavaScript를 사용하는 방법을 지정합니다.

이 키 값이 "없음" [기본값]으로 설정된 경우 ASP.NET 응용프로그램은 클라이언트 측 유효성 검사 로직에 대해 4.5 이전 동작(페이지 내의 JavaScript 인라인)을 사용합니다.

이 키 값이 "WebForms"로 설정된 경우, ASP.NET은 클라이언트 측 유효성 검사 논리에 대해 추가된 스크립트 참조에서 HTML5 데이터 속성 및 latebound JavaScript를 사용합니다.

특정 페이지에서 이 문제를 해결하려면 페이지 로드 시 일부 유효성 검사 설정을 설정해야 합니다.를 에코쓰드기에 쓰세요.Page_Load()방법:

protected void Page_Load(object sender, EventArgs e)
    {
        ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
    }

.NET 4.5에서 작동합니다.

저는 이 유형의 오류에 대한 가장 좋은 해결책이라고 생각합니다.그래서 아래 줄에 추가해 주세요.또한 MSVS 2015를 사용할 때 코드가 작동합니다.

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

Jaqen H'gar는 현장에 있습니다.세 번째 방법은 다음과 같습니다.

  1. NuGet 패키지 관리로 이동
  2. Microsoft를 설치합니다.jQuery. 방해가 되지 않습니다.확인
  3. Global.asax.cs 파일을 열고 Application_Start 메서드 내에 이 코드를 추가합니다.

응용 프로그램 시작 시 실행되는 코드:

ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition {
    Path = "~/Scripts/jquery.validate.unobtrusive.min.js",
    DebugPath = "~/Scripts/jquery.validate.unobtrusive.min.js"
});

웹 사이트를 마우스 오른쪽 버튼으로 클릭한 후 속성 페이지로 이동하고 게 필요한 옵션 유효성 확인에서 확인란을 모두 선택합니다. 웹 사이트를 실행하십시오.

이 예외는 방해가 되지 않는 JavaScript 유효성 검사 모드에 문제가 있음을 나타냅니다.이 문제는 Sitefinity에 특정되지 않으며 프로젝트가 .NET 4.5 프레임워크를 대상으로 하고 4.5 이전 검증이 web.config 파일에서 실행되지 않은 경우 표준 ASP.NET 응용 프로그램에서 발생합니다.

web.config 파일을 열고 유효성 검사 설정이 있는지 확인합니다.앱 설정의 방해되지 않는 유효성 검사 모드:

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

승인된 답변과 함께 사이트의 다른 곳에서 마이그레이트 플러그인과 함께 jQuery가 필요한 코드 문제를 발견했습니다.

필요한 매핑이 Global.asax에 추가되면 방해가 되지 않는 유효성 검사가 필요한 페이지(예: ChangePassword ASP 컨트롤이 있는 페이지)를 로드할 때 매핑된 스크립트 리소스가 이미 로드된 jQuery 및 마이그레이션 스크립트와 충돌합니다.

마이그레이션 플러그인을 두 번째 매핑으로 추가하면 다음과 같은 문제가 해결됩니다.

// required for UnobtrusiveValidationMode introduced since ASP.NET 4.5
var jQueryScriptDefinition = new ScriptResourceDefinition
{
    Path = "~/Plugins/Common/jquery-3.3.1.min.js", DebugPath = "~/Plugins/Common/jquery-3.3.1.js", LoadSuccessExpression = "typeof(window.jQuery) !== 'undefined'"
};
var jQueryMigrateScriptDefinition = new ScriptResourceDefinition
{
    Path = "~/Plugins/Common/jquery-migrate-3.0.1.min.js", DebugPath = "~/Plugins/Common/jquery-migrate-3.0.1.js", LoadSuccessExpression = "typeof(window.jQuery) !== 'undefined'"
};
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", jQueryScriptDefinition);
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", jQueryMigrateScriptDefinition);

언급URL : https://stackoverflow.com/questions/37230036/webforms-unobtrusivevalidationmode-requires-a-scriptresourcemapping-for-jquery

반응형