WebForms UnobtrusiveValidationMode에는 ‘jquery’에 대한 ScriptResourceMapping이 필요합니다. jquery (대소 문자 구분)라는 ScriptResourceMapping을 추가하십시오 objDiv.innerHTML = “0

Visual Studio 2012를 사용하여 웹 응용 프로그램을 작성하고 있습니다. 텍스트 상자에 단어 수를 추가하려고합니다. 그러나 자바 스크립트 코드와 HTML 코드를 추가 한 후. 위에서 설명한대로 오류가 나타납니다.

여기 내 자바 스크립트가 코딩되어 있습니다.

코드 :

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 키가 필요합니다.

ValidationSettings : UnobtrusiveValidationMode 에 대한 추가 정보 :

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

유형 : 눈에 띄지 않는 검증 모드

기본값 : 없음

설명 :이 키 값을 “없음” [기본값]으로 설정하면 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 블로그 게시물 에서 비롯된 것입니다. “debug = true”, EnableCDN 등을 기반으로 스크립트 파일의 전달을 중앙 집중식으로 제어하는 ​​것이 특히 중요했습니다.


답변

클라이언트 측 유효성 검증을 위해 방해받지 않는 JavaScript를 사용하지 않도록 설정하는 방법에는 최소한 세 가지가 있습니다.

  1. web.config 파일에 다음을 추가하십시오.
    <configuration>
      <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
      </appSettings>
    </configuration>
  2. System.Web.UI.ValidationSettings.UnobtrusiveValidationMode정적 속성 값 을System.Web.UI.UnobtrusiveValidationMode.None
  3. System.Web.UI.Page.UnobtrusiveValidationMode인스턴스 속성 값 을System.Web.UI.UnobtrusiveValidationMode.None

페이지별로 기능을 비활성화하려면 Page.UnobtrusiveValidationModepage 지시문을 사용하여 속성 을 설정하는 것이 좋습니다.

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

C # 및 VB의 ASP.NET 4.5.1 시작 페이지 397에서는 눈에 거슬리지 않는 유효성 검사의 이점과이를 구성하는 방법에 대해 설명합니다.

RouteConfig를 찾는 사람들을 위해. Visual Studio에서 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);
        }
    }
}

답변

global.asax의 b_levitt …의 답변에 조금 더 추가하려면 :

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

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

답변

나는 같은 quandary를 만났다고 생각합니다. 다음으로 변경했을 때 문제가 발생하기 시작했습니다.

</system.web>
<httpRuntime targetFramework="4.5"/>

위에서 설명한 오류 메시지가 표시됩니다.

첨가:

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

문제를 해결 하지만 유효성 검사 컨트롤 / 스크립트에서 Javascript 런타임 오류가 발생합니다.
다음으로 변경하면

</system.web>
<httpRuntime targetFramework="4.0"/>

괜찮아 야 하지만 나머지 코드가 원하는대로 작동하는지 확인해야합니다. 4.5 이상에서만 사용할 수있는 일부 새로운 기능을 포기해야 할 수도 있습니다.

PS이 솔루션을 구현하기 전에 다음을 읽어 보는 것이 좋습니다. 특히 비동기 기능을 사용하는 경우 :

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


답변

제어 유효성 검증기로 인해 문제점이 발생했습니다. 다음과 같이 웹 페이지에 J Query 참조를 추가 한 다음 web.config 파일에 유효성 검증 설정을 추가하여 문제점을 극복하십시오. 나도 같은 문제에 직면했고 아래는 내 문제에 대한 해결책을 주었다.

1 단계:

2 단계 :

문제가 해결됩니다.