320 votes

WebForms UnobtrusiveValidationMode nécessite un ScriptResourceMapping pour 'jquery'. Veuillez ajouter un scriptResourceMapping nommé jquery (sensible à la casse)

Je construis une application web en utilisant Visual Studio 2012. J'essaye d'ajouter le nombre de mots dans ma zone de texte. Cependant après avoir ajouté les codes javascript et les codes html. Je reçois l'erreur comme indiqué ci-dessus.

Voici mes codes javascript

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

Codes du serveur dans la page maître

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

Codes ASPX, (codes 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>
 

611voto

ericdc Points 2966

Vous avez besoin d'un site web.clé de configuration pour activer la pré 4.5 validation de la mode.

Plus d'Infos sur ValidationSettings:UnobtrusiveValidationMode:

Spécifie la façon dont les ASP.NET à l'échelle mondiale permet à l'intégré dans le programme de validation des contrôles pour utiliser JavaScript discret pour logique de validation côté client.

Type: UnobtrusiveValidationMode

Valeur par défaut: None

Remarques: Si la valeur de cette clé est réglé sur "None" [par défaut], la ASP.NET l'application va utiliser la pré-4.5 comportement (JavaScript inline dans les pages) pour la logique de validation côté client. Si la valeur de cette clé est définie de "Formulaires", ASP.NET utilise HTML5 attributs data-et tardive JavaScript à partir d'un script ajouté de référence pour la validation côté client la logique.

Exemple:

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

178voto

b_levitt Points 1218

Plutôt que de désactiver une nouvelle fonctionnalité, j'ai choisi de suivre les instructions de l'erreur. Dans mon global.asax.cs, j'ai ajouté:

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

Cela vient d'une msdn blog qui met en lumière quelques-uns des avantages de script de ressources mappages. D'un intérêt particulier pour moi, c'était un contrôle centralisé sur la livraison des fichiers de script basé sur "debug=true", EnableCDN, etc.

98voto

Ryan Prechel Points 1050

Il y a au moins trois façons de désactiver l'utilisation de JavaScript discret pour la validation côté client:

  1. Ajoutez les lignes suivantes au web.fichier de configuration:
    <configuration>
      <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
      </appSettings>
    </configuration>
  2. Définissez la valeur de l' System.Web.UI.ValidationSettings.UnobtrusiveValidationMode propriété statique System.Web.UI.UnobtrusiveValidationMode.None
  3. Définissez la valeur de l' System.Web.UI.Page.UnobtrusiveValidationMode des propriétés de l'occurrence d' System.Web.UI.UnobtrusiveValidationMode.None

Pour désactiver la fonctionnalité sur une base par page, je préfère définir l' Page.UnobtrusiveValidationMode de la propriété à l'aide de la directive de page:

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

48voto

denver Points 653

Discrète validation est activée par défaut dans la nouvelle version de ASP.NET. Discrète de validation vise à diminuer la taille de la page par le remplacement de la ligne JavaScript pour la réalisation de validation avec une petite bibliothèque JavaScript qui utilise jQuery.

Vous pouvez la désactiver en modifiant web.config pour inclure les éléments suivants:

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

Ou mieux encore, de le configurer correctement par la modification de la méthode Application_Start mondiale.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"
        }
    );
}

Page 399 de Début ASP.NET 4.5.1 en C# et VB fournit une discussion sur l'intérêt de l'discrète de validation et un pas à pas pour la configuration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X