WebForms UnobtrusiveValidationMode vereist een ScriptResourceMapping voor ‘jQuery’. Voeg een ScriptResourceMapping toe met de naam jQuery(hoofdlettergevoelig)

Ik bouw een webtoepassing met Visual Studio 2012.
Ik probeer het aantal woorden toe te voegen aan mijn tekstvak.
Echter na het toevoegen van de javascript-codes en de html-codes. Ik krijg de foutmelding zoals hierboven vermeld.

Hier zijn mijn javascript-codes

Code:

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

Servercodes in hoofdpagina

<script type="text/javascript" src="js/JScript.js" ></script>

ASPX-codes, (Html-codes)

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

Antwoord 1, autoriteit 100%

Je hebt een web.config-sleutel nodig om de pre 4.5-validatiemodus in te schakelen.

Meer informatie over ValidationSettings:UnobtrusiveValidationMode:

Specificeert hoe ASP.NET globaal de ingebouwde validatiecontroles inschakelt
om onopvallend JavaScript te gebruiken voor validatielogica aan de clientzijde.

Type: UnobtrusiveValidationMode

Standaardwaarde: Geen

Opmerkingen: als deze sleutelwaarde is ingesteld op “Geen”[standaard], zal de ASP.NET
applicatie gebruikt het gedrag van vóór 4.5(JavaScript inline in
de pagina’s) voor validatielogica aan de clientzijde. Als deze sleutelwaarde is ingesteld
voor “WebForms”, gebruikt ASP.NET HTML5-gegevenskenmerken en laat gebonden
JavaScript van een toegevoegde scriptreferentie
voor validatie aan de clientzijde
logica.

Voorbeeld:

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

Antwoord 2, autoriteit 29%

In plaats van een nieuwe functie uit te schakelen, heb ik ervoor gekozen de instructies van de fout te volgen. In mijn global.asax.cs heb ik toegevoegd:

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

Dit komt uit een msdn-blogbericht waarin enkele van de voordelen van het toewijzen van scriptbronnen worden benadrukt. Van bijzonder belang voor mij was gecentraliseerde controle over de levering van de scriptbestanden op basis van “debug=true”, EnableCDN, enz.


Antwoord 3, autoriteit 16%

Er zijn ten minste drie manieren om het gebruik van onopvallend JavaScript voor client-side validatie uit te schakelen:

  1. Voeg het volgende toe aan het bestand web.config:
    <configuration>
      <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
      </appSettings>
    </configuration>
  2. Stel de waarde van de statische eigenschap System.Web.UI.ValidationSettings.UnobtrusiveValidationModein op System.Web.UI.UnobtrusiveValidationMode.None
  3. Stel de waarde van de instantie-eigenschap System.Web.UI.Page.UnobtrusiveValidationModein op System.Web.UI.UnobtrusiveValidationMode.None

Om de functionaliteit per pagina uit te schakelen, geef ik er de voorkeur aan de eigenschap Page.UnobtrusiveValidationModein te stellen met behulp van de pagina-instructie:

<%@ Page Language="C#" UnobtrusiveValidationMode="None" %>

Antwoord 4, autoriteit 8%

Onopvallende validatie is standaard ingeschakeld in de nieuwe versie van ASP.NET. Onopvallende validatie is bedoeld om de paginagrootte te verkleinen door het inline JavaScript voor het uitvoeren van validatie te vervangen door een kleine JavaScript-bibliotheek die jQuery gebruikt.

Je kunt het ofwel uitschakelen door web.config te bewerken met het volgende:

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

Of nog beter, configureer het goed door de Application_Start-methode in global.asax te wijzigen:

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

Pagina 399 van Beginnen met ASP.NET 4.5.1 in C# en VB biedt een discussie over het voordeel van onopvallende validatie en een handleiding voor het configureren ervan.

Voor wie op zoek is naar RouteConfig. Het wordt automatisch toegevoegd wanneer u een nieuw project in Visual Studio aan de App_Code-map maakt. De inhoud ziet er ongeveer zo uit:

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

Antwoord 5, autoriteit 2%

om iets meer toe te voegen aan het antwoord van b_levitt…
op 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"
            });
        }
    }
}

op uw standaard.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>

Antwoord 6, Autoriteit 2%

Ik geloof dat ik dezelfde quandary heb tegengekomen. Ik begon het probleem tegen te komen toen ik veranderde naar:

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

die het foutbericht geeft dat u hierboven beschrijft.

toevoegen:

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

Lost het probleem op, , maar dan maakt het uw valideringscontroles / scripts gooien JavaScript Runtime-fouten.
Als u verandert naar:

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

U zou OK moeten zijn, , maar u zult ervoor moeten zorgen dat de rest van uw code doet / gedraagt ​​naar wens. Misschien moet u ook een aantal nieuwe functies in 4,5 volgen.

P.S. Het wordt ten zeerste aanbevolen om het volgende te lezen voordat u deze oplossing implementeert. Vooral, als u ASYNC-functionaliteit gebruikt:

https://blogs. msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

UPDATE april 2017:
Na wat experimenteren en testen heb ik een combinatie bedacht die werkt:

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

met:

jQuery versie 1.11.3


Antwoord 7

Het probleem is opgetreden vanwege de controle-validator. Voeg de J Query-referentie als volgt toe aan uw webpagina en voeg vervolgens de validatie-instellingen toe aan uw web.config-bestand om het probleem op te lossen. Ik had ook hetzelfde probleem en het onderstaande gaf de oplossing voor mijn probleem.

Stap1:

Stap2 :

Het zal je probleem oplossen.


Antwoord 8

Het heeft 3 oplossingen die andere jongens boven vertelden…
maar wanneer probeer Application_Start-oplossing, mijn andere jQuery-bibliotheek zoals Pickup_Date_and_Time werkt niet …
dus ik test de tweede manier en het is beantwoord:
1- stel het Target FrameWork in op Pre 4.5
2- Gebruik ” UnobtrusiveValidationMode=”None” ” in uw paginakoptekst =>

<%@ Page Title="" Language="C#" 
    MasterPageFile="~/Master/MasteOfHotel.Master" 
    UnobtrusiveValidationMode="None" %>

het werkt voor mij en verstoort mijn andere jQuery-functie niet.

Other episodes