WEBFORMS UNOPTRUSIVEVALIDATIONMODE vereist een scriptresourcapping voor jQuery

In mijn webtoepassing krijg ik de volgende foutmelding:

Webformets UNOptiveValidationMode vereist een scriptresourcapping
voor ‘jQuery’. Voeg een scriptresourcemapping met de naam toe
jQuery (hoofdlettergevoelig).

Beschrijving: Er is een onverhandelde uitzondering opgetreden tijdens de uitvoering van
het huidige webverzoek. Bekijk het stapelspoor voor meer
informatie over de fout en waar het is ontstaan ​​in de code.

Uitzonderingsdetails: System.invalidOperationException: Webformets
OnobiniveValidationMode vereist een scriptresourcapping voor
‘jQuery’. Voeg een scriptresourcemapping met de naam toe
jQuery (hoofdlettergevoelig).

Hoe kan ik het oplossen?


Antwoord 1, Autoriteit 100%

Sinds .NET 4.5 De ​​validatoren gebruiken gegevensattributen en begrensde JavaScript om het validatiewerk te doen, dus verwacht u dat u een scriptreferentie voor jQuery toevoegt.

Er zijn twee mogelijke manieren om de fout op te lossen:


Uitschakelen UnobtrusiveValidationMode:

Voeg dit toe aan web.config:

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

Het zal werken zoals het in eerdere .NET-versies werkte en zal gewoon het benodigde Javascript toevoegen aan uw pagina om de validators te laten werken, in plaats van op zoek naar de code in uw JQuery-bestand. Dit is eigenlijk de gemeenschappelijke oplossing.


Een andere oplossing is om het script te registreren:

In Global.SAX Application_StartToevoegen aan uw JQuery File Path:

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

Enkele details van MSDN:

ValidationSettings:UnobtrusiveValidationModeSpecificeert hoe ASP.NET
stelt globaal de ingebouwde validator-besturingselementen in staat om onopvallend te gebruiken
JavaScript voor validatielogica aan de clientzijde.

Als deze sleutelwaarde is ingesteld op “Geen” [standaard], zal de ASP.NET-toepassing
zal het gedrag van vóór 4.5 gebruiken (JavaScript inline in de pagina’s) voor:
validatielogica aan de clientzijde.

Als deze sleutelwaarde is ingesteld op “WebForms”, gebruikt ASP.NET HTML5-gegevenskenmerken en laat-gebonden JavaScript van een toegevoegde scriptreferentie voor validatielogica aan de clientzijde.


Antwoord 2, autoriteit 6%

Om dit probleem op een specifieke pagina op te lossen, moet u enkele validatie-instellingen instellen bij het laden van de pagina. Schrijf onderstaande code in de Page_Load()methode:

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

Het werkt voor mij in .NET 4.5


Antwoord 3, autoriteit 4%

Ik denk dat dit de beste oplossing is voor dit type fout.
Dus voeg onderstaande regel toe.
Het werkt ook mijn code wanneer ik MSVS 2015 gebruik.

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


Antwoord 4, autoriteit 2%

Jaqen H’ghar is perfect. Een derde manier is om:

  1. Ga naar NuGet-pakketten beheren
  2. Installeer Microsoft.jQuery.Unobtrusive.Validation
  3. Open het bestand Global.asax.cs en voeg deze code toe aan de Application_Start-methode

Code die wordt uitgevoerd bij het opstarten van de applicatie:

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

Antwoord 5

Klik met de rechtermuisknop op uw website, ga naar eigenschapspagina’sen vink beide selectievakjes aan onder Toegankelijkheidsvalidatieklik op ok. de website draaien.


Antwoord 6

De uitzondering duidt op een probleem met de onopvallende JavaScript-validatiemodus. Dit probleem is niet Sitefinity-specifiek en treedt op in alle standaard ASP.NET-applicaties wanneer het project gericht is op het .NET 4.5-framework en de pre-4.5-validatie niet is ingeschakeld in het web.config-bestand.

Open het web.config-bestand en zorg ervoor dat er een ValidationSettings:UnobtrusiveValidationMode is in de app-instellingen:

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

Antwoord 7

Naast het geaccepteerde antwoord, kwam ik problemen tegen met code elders op mijn site die jQuery vereist samen met de Plugin migreren.

Wanneer de vereiste toewijzing wordt toegevoegd aan Global.asax, bij het laden van een pagina die onopvallende validatie vereist (bijvoorbeeld een pagina met het ChangePassword ASP-besturingselement), conflicteert de toegewezen scriptbron met de reeds geladen jQuery en migreert scripts.

p>

Het toevoegen van de plug-in voor migreren als een tweede toewijzing lost het probleem op:

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

Other episodes