WebForms UnobtrusiveValidationMode krever en ScriptResourceMapping for 'jquery'. Vennligst legg til en ScriptResourceMapping med navnet jquery(case-sensitive).

Jeg bygger en webapplikasjon ved hjelp av Visual Studio 2012. Jeg prøver å legge til antall ord i tekstboksen min. Men etter å ha lagt til javascript-kodene og html-kodene. Jeg mottar feilen som nevnt ovenfor.

Her er javascript-kodene mine

Kode:

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

Serverkoder på hovedsiden

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

ASPX-koder, ( Html-koder )

<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>
Løsning

Du trenger en web.config-nøkkel for å aktivere valideringsmodus før 4.5.

Mer informasjon på ValidationSettings:UnobtrusiveValidationMode:

Angir hvordan ASP.NET globalt aktiverer de innebygde kontrollene for validering. til å bruke diskret JavaScript for valideringslogikk på klientsiden.

Type: UnobtrusiveValidationMode

Standardverdi: None

Merknader: Hvis denne nøkkelverdien er satt til "None" [standard], vil ASP.NET applikasjonen bruke oppførselen før 4.5 (JavaScript inline på sidene). sidene) for valideringslogikk på klientsiden. Hvis denne nøkkelverdien er satt til "WebForms", bruker ASP.NET HTML5 data-attributter og sent bundet JavaScript fra en ekstra skriptreferanse for validering på klientsiden. logikk.

Eksempel:

&gt

Kommentarer (7)

I stedet for å deaktivere en ny funksjon, valgte jeg å følge instruksjonene i feilen. I min global.asax.cs la jeg til:

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

Dette kommer fra et msdn-blogginnlegg som fremhever noen av fordelene med skriptressurstilordninger. Av spesiell interesse for meg var sentralisert kontroll over levering av skriptfilene basert på "debug=true", EnableCDN, etc.

Kommentarer (4)

Diskret validering er aktivert som standard i den nye versjonen av ASP.NET. Diskret validering tar sikte på å redusere sidestørrelsen ved å erstatte inline JavaScript for å utføre validering med et lite JavaScript-bibliotek som bruker jQuery.

Du kan enten deaktivere det ved å redigere web.config for å inkludere følgende:



Eller enda bedre konfigurere den riktig ved å endre Application_Start-metoden i global.asax:

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

Side 399 i Beginning ASP.NET 4.5.1 i C# og VB gir en diskusjon om fordelen med diskret validering og en gjennomgang for å konfigurere den.

For de som leter etter RouteConfig. Den legges automatisk til når du lager et nytt prosjekt i Visual Studio i App_Code-mappen. Innholdet ser omtrent slik ut:

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);
        }
    }
}
Kommentarer (2)