it-swarm.it

WebForms UnobtrusiveValidationMode richiede un ScriptResourceMapping per 'jquery'. Aggiungi un oggetto ScriptResourceMapping denominato jquery (sensibile al maiuscolo/minuscolo)

Sto creando un'applicazione Web utilizzando Visual Studio 2012. Sto tentando di aggiungere il conteggio parole nella mia casella di testo. Tuttavia dopo aver aggiunto i codici javascript e i codici html. Ricevo l'errore come indicato sopra.

Ecco i miei codici javascript

Codice :

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

Codici server nella pagina principale

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

Codici ASPX, (codici 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>
286

È necessaria una chiave web.config per abilitare la modalità di convalida pre 4.5.

Ulteriori informazioni suValidationSettings: UnobtrusiveValidationMode:

Specifica in che modo ASP.NET consente globalmente ai controlli del validatore integrato di utilizzare JavaScript non invadente per la logica di convalida lato client.

Tipo: UnobtrusiveValidationMode

Valore predefinito: Nessuno

Note: Se questo valore chiave è impostato su "Nessuno" [predefinito], l'applicazione ASP.NET utilizzerà il comportamento pre-4.5 (inline JavaScript nelle pagine) per client- logica di convalida laterale. Se questo valore chiave è impostato su "WebForms" , ASP.NET utilizza attributi dati HTML5 e JavaScript con limite di ritardo da un riferimento script aggiunto per logica di convalida lato client.

Esempio:

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

Invece di disabilitare una nuova funzione, ho deciso di seguire le istruzioni dell'errore. Nel mio global.asax.cs ho aggiunto:

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

Questo deriva da un msdn post di blog che evidenzia alcuni dei vantaggi dei mapping delle risorse di script. Di particolare interesse per me era il controllo centralizzato sulla consegna dei file di script basati su "debug = true", EnableCDN, ecc.

164
b_levitt

Ci sono almeno tre modi per disabilitare l'uso di JavaScript non invadente per la validazione lato client:

  1. Aggiungi quanto segue al file web.config:
    <configuration>
      <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
      </appSettings>
    </configuration>
  2. Imposta il valore della proprietà statica System.Web.UI.ValidationSettings.UnobtrusiveValidationMode su System.Web.UI.UnobtrusiveValidationMode.None
  3. Imposta il valore della proprietà dell'istanza System.Web.UI.Page.UnobtrusiveValidationMode su System.Web.UI.UnobtrusiveValidationMode.None

Per disabilitare la funzionalità in base alla pagina, preferisco impostare la proprietà Page.UnobtrusiveValidationMode utilizzando la direttiva della pagina:

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

La convalida non invadente è abilitata di default nella nuova versione di ASP.NET. La validazione discreta mira a ridurre le dimensioni della pagina sostituendo il JavaScript inline per eseguire la convalida con una piccola libreria JavaScript che utilizza jQuery.

Puoi disabilitarlo modificando web.config per includere quanto segue:

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

Oppure, meglio ancora, configurarlo correttamente modificando il metodo Application_Start in 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"
        }
    );
}

La pagina 399 di Beginning ASP.NET 4.5.1 in C # e VB fornisce una discussione sui vantaggi della convalida non invadente e una procedura dettagliata per la sua configurazione.

Per chi cerca RouteConfig. Viene aggiunto automaticamente quando si crea un nuovo progetto in Visual Studio nella cartella App_Code. Il contenuto assomiglia a questo:

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

Credo di aver incontrato lo stesso dilemma. Ho iniziato a incontrare il problema quando ho cambiato:

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

Che dà il messaggio di errore che descrivi sopra.

aggiungendo:

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

Risolve il problema, ma poi fa in modo che i controlli/gli script di validazione generino errori di runtime di Javascript. Se si passa a:

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

Dovresti essere OK, ma dovrai assicurarti che il resto del tuo codice si comporti/si comporti come desiderato. Potrebbe anche essere necessario rinunciare ad alcune nuove funzionalità disponibili solo in 4.5 in poi.

P.S. Si consiglia vivamente di leggere quanto segue prima di implementare questa soluzione. Soprattutto se usi la funzionalità Async:

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

AGGIORNAMENTO Aprile 2017: Dopo alcuni esperimenti e test, ho trovato una combinazione che funziona:

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

con:

versione jQuery 1.11.3

10
DaniDev

per aggiungere un po 'di più alla risposta di b_levitt ... su 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"
            });
        }
    }
}

sul tuo 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>
9
BernieSF

Il problema si è verificato a causa del validatore di controllo. Basta aggiungere il riferimento a J Query alla tua pagina web come segue e quindi aggiungere le impostazioni di convalida nel file web.config per risolvere il problema. Anch'io ho affrontato lo stesso problema e il sotto ha dato la soluzione al mio problema.

Step1:

 Code to be added in web page

Step2:

 Code to be added in Web.config file

Risolverà il tuo problema.

7
Ivan

Se il codice o la configurazione sembrano corretti dopo aver esaminato le altre risposte, ho riscontrato questo problema con un sito Web distribuito (staging di sviluppo) e ho scoperto che il problema era che il file Global.asax era stato rinominato. (Da me, alcuni giorni prima, quando ho problemi con customErrors e Application_Error)

1
StingyJack