WebForms UntruptiveValidationMode를 사용하려면 'jquery'를 위한 ScriptResourceMapping이 필요합니다.jquery(대문자와 소문자가 구분됨)라는 이름의 ScriptResourceMapping을 추가하십시오.
저는 Visual Studio 2012를 사용하여 웹 애플리케이션을 만들고 있습니다.텍스트 상자에 단어 수를 추가하려고 합니다.그러나 Javascript 코드와 html 코드를 추가한 후.위와 같은 에러가 발생하였습니다.
여기 제 Javascript 코드입니다.
코드:
function validateLimit(obj, divID, maxchar) {
objDiv = get_object(divID);
if (this.id) obj = this;
var remaningChar = maxchar - trimEnter(obj.value).length;
if (objDiv.id) {
objDiv.innerHTML = remaningChar + " characters left";
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
if (objDiv.id) {
objDiv.innerHTML = "0 characters left";
}
return false;
}
else
{ return true; }
}
function get_object(id) {
var object = null;
if (document.layers) {
object = document.layers[id];
} else if (document.all) {
object = document.all[id];
} else if (document.getElementById) {
object = document.getElementById(id);
}
return object;
}
function trimEnter(dataStr) {
return dataStr.replace(/(\r\n|\r|\n)/g, "");
}
마스터 페이지의 서버 코드
<script type="text/javascript" src="js/JScript.js" ></script>
ASPX 코드(Html 코드)
<tr>
<th style="width: 595px; height: 135px;">Official Report :</th>
<td colspan="4" style="height: 135px">
<asp:TextBox ID="tbofficial" runat="server" Height="121px" TextMode="MultiLine" Width="878px" MaxLength="500" ToolTip="Summary:(500 characters)" onkeyup="return validateLimit(this, 'lblMsg1', 500)" ></asp:TextBox>
<div id="lblMsg1">500 characters left</div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="tbofficial" Display="Dynamic"
SetFocusOnError="True">*</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblmsg" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
<asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" />
</td>
</tr>
4.5 이전 검증 모드를 사용하려면 web.config 키가 필요합니다.
검증 설정에 대한 상세 정보:방해받지 않는 검증 모드:
ASP 의 방법을 지정합니다.NET을 사용하면 빌트인 검증자 컨트롤이 클라이언트 측 검증 로직을 위해 방해받지 않는 JavaScript를 사용할 수 있습니다.
유형: Unclusive Validation Mode
기본값:없음.
비고: 이 키 값이 [없음][기본값]으로 설정되어 있는 경우 ASP가 표시됩니다.NET 응용 프로그램은 클라이언트 측 검증 로직으로 4.5 이전 동작(페이지에서 JavaScript 인라인)을 사용합니다.이 키 값이 "WebForms"로 설정된 경우 ASP.NET은 클라이언트 측 검증 로직을 위해 추가된 스크립트 참조에서 HTML5 데이터 속성 및 레이트바인드 JavaScript를 사용합니다.
예:
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
새로운 기능을 무효로 하는 대신에, 에러의 지시에 따르도록 선택했습니다.global.asax.cs에 다음과 같이 추가했습니다.
protected void Application_Start(object sender, EventArgs e)
{
string JQueryVer = "1.7.1";
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
{
Path = "~/Scripts/jquery-" + JQueryVer + ".min.js",
DebugPath = "~/Scripts/jquery-" + JQueryVer + ".js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
CdnSupportsSecureConnection = true,
LoadSuccessExpression = "window.jQuery"
});
}
이는 스크립트 리소스 매핑의 이점을 강조하는 msdn 블로그 게시물에서 나온 것입니다.특히 관심이 있었던 것은 스크립트 파일 전달에 대한 중앙 집중식 제어, "timeout=true", "EnableCDN" 등이었습니다.
클라이언트측 검증에 방해받지 않는 JavaScript의 사용을 무효로 하는 방법에는 적어도 3가지가 있습니다.
- web.config 파일을 . config 。
<configuration> <appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings> </configuration>
- 값을 합니다.
System.Web.UI.ValidationSettings.UnobtrusiveValidationMode
에서 ""로System.Web.UI.UnobtrusiveValidationMode.None
- 값을 합니다.
System.Web.UI.Page.UnobtrusiveValidationMode
to " " 。System.Web.UI.UnobtrusiveValidationMode.None
을 페이지 하려면 , 「」를 하는 것을 합니다.Page.UnobtrusiveValidationMode
페이지 지시어를 사용하여 속성을 지정합니다.
<%@ Page Language="C#" UnobtrusiveValidationMode="None" %>
ASP의 새 버전에서는 방해받지 않는 유효성 검사가 기본적으로 사용하도록 설정됩니다.NET. 방해받지 않는 검증은 검증을 수행하기 위한 인라인 JavaScript를 jQuery를 사용하는 작은 JavaScript 라이브러리로 대체하여 페이지 크기를 줄이는 것을 목적으로 합니다.
다음을 포함하도록 web.config를 편집하여 비활성화할 수 있습니다.
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
또는 global.asax의 Application_Start 메서드를 변경하여 적절하게 설정할 수도 있습니다.
void Application_Start(object sender, EventArgs e)
{
RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
new ScriptResourceDefinition
{
Path = "/~Scripts/jquery-2.1.1.min.js"
}
);
}
ASP 시작 페이지 399.C# 및 VB 의 NET 4.5.1 에서는, 불필요한 검증의 이점과 그 설정의 실시에 대해 설명합니다.
Route Config 를 찾는 사용자용.비주얼 스튜디오에서 새로운 프로젝트를 만들면 App_Code 폴더에 자동으로 추가됩니다.내용은 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Routing;
using Microsoft.AspNet.FriendlyUrls;
namespace @default
{
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
}
}
b_levitt의 답변에 조금 더 덧붙이자면...global.asax:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
namespace LoginPage
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
string JQueryVer = "1.11.3";
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
{
Path = "~/js/jquery-" + JQueryVer + ".min.js",
DebugPath = "~/js/jquery-" + JQueryVer + ".js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
CdnSupportsSecureConnection = true,
LoadSuccessExpression = "window.jQuery"
});
}
}
}
디폴트.aspx에 대해서
<body>
<form id="UserSectionForm" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server">
<Scripts>
<asp:ScriptReference Name="jquery" />
</Scripts>
</asp:ScriptManager>
<%--rest of your markup goes here--%>
</form>
</body>
나는 내가 같은 곤경에 직면했다고 믿는다.다음으로 변경했을 때 문제가 발생하기 시작했습니다.
</system.web>
<httpRuntime targetFramework="4.5"/>
그러면 위에서 설명한 오류 메시지가 나타납니다.
추가:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
문제를 해결하지만 검증 컨트롤/스크립트가 Javascript 런타임 오류를 발생시킵니다.다음으로 변경하는 경우:
</system.web>
<httpRuntime targetFramework="4.0"/>
정상이지만 나머지 코드가 원하는 대로 작동하는지 확인해야 합니다. 또한 4.5 이후에서만 사용할 수 있는 몇 가지 새로운 기능을 사용하지 않아도 될 수도 있습니다.
추신: 이 솔루션을 구현하기 전에 다음 사항을 읽는 것이 좋습니다.특히 비동기 기능을 사용하는 경우:
https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/
2017년 4월 업데이트: 몇 가지 실험과 테스트를 거친 후 다음과 같은 기능을 하는 조합을 생각해냈습니다.
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
<httpRuntime targetFramework="4.5.1" />
포함:
jQuery 버전 1.11.3
Control Validator로 인해 문제가 발생했습니다.다음과 같이 웹 페이지에 J Query 참조를 추가한 후 web.config 파일에 Validation Settings를 추가하면 문제를 해결할 수 있습니다.저도 같은 문제에 직면했고, 아래는 저의 문제에 대한 해결책을 제시했습니다.
순서 1:
순서 2:
문제가 해결됩니다.
다른 사람들이 윗사람에게 말한 3가지 해결책이 있습니다.그러나 Application_Start 솔루션을 시도하면 픽업_Date_and_와 같은 다른 jQuery 라이브러리가 나타납니다.시간이 흐르지 않는다...두 번째 방법으로 테스트하면 다음과 같은 답이 나옵니다. 1-타깃 프레임 워크를 4.5 이전으로 설정 - 페이지 헤더에 "Untruptive Validation Mode="None"을 사용합니다. =>
<%@ Page Title="" Language="C#"
MasterPageFile="~/Master/MasteOfHotel.Master"
UnobtrusiveValidationMode="None" %>
다른 jQuery 기능을 방해하지 않고 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/16660900/webforms-unobtrusivevalidationmode-requires-a-scriptresourcemapping-for-jquery
'programing' 카테고리의 다른 글
테이블 이름 검색 (0) | 2023.04.23 |
---|---|
NSLog에서 사용하는 "toString()"에 대한 Objective-C는 무엇입니까? (0) | 2023.04.23 |
이미 실행 중인 프로세스를 nohup에 넣는 방법은 무엇입니까? (0) | 2023.04.23 |
비동기 코드에서 비동기 메서드를 호출합니다. (0) | 2023.04.23 |
VBA를 사용하지 않고 Excel에서 역문자열 검색을 실행하는 방법은 무엇입니까? (0) | 2023.04.23 |