148 votos

WebForms UnobtrusiveValidationMode requiere un ScriptResourceMapping para 'jquery'. Por favor, añada un ScriptResourceMapping llamado jquery(distingue entre mayúsculas y minúsculas)

Estoy construyendo una aplicación web usando Visual Studio 2012. Estoy tratando de añadir el recuento de palabras en mi cuadro de texto. Sin embargo, después de añadir los códigos javascript y los códigos html. Recibo el error como se indica anteriormente.

Aquí está mi código javascript

Código :

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

Códigos de servidor en la página principal

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

Códigos ASPX, ( códigos 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>

284voto

ericdc Puntos 2966

Necesita una clave web.config para activar el modo de validación pre 4.5.

Más información ValidationSettings:UnobtrusiveValidationMode :

Especifica cómo ASP.NET habilita globalmente los controles de validación incorporados para usar JavaScript discreto para la lógica de validación del lado del cliente.

Tipo: UnobtrusiveValidationMode

Valor por defecto: Ninguno

Observaciones: si este valor de la clave se establece como "Ninguno" [por defecto], la aplicación ASP.NET utilizará el comportamiento anterior a 4.5 (JavaScript en línea en las páginas) para la lógica de validación del lado del cliente. Si este valor clave se establece a "WebForms" ASP.NET utiliza Los atributos de datos de HTML5 y la vinculación tardía JavaScript de una referencia script añadida para la validación del lado del cliente lógica.

Ejemplo:

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

85voto

b_levitt Puntos 1218

En lugar de desactivar una nueva función, he optado por seguir las instrucciones del error. En mi global.asax.cs añadí:

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

Esto viene de un entrada en el blog de msdn que destaca algunas de las ventajas de las asignaciones de recursos script. De particular interés para mí fue el control centralizado sobre la entrega de los archivos script basados en "debug=true", EnableCDN, etc.

45voto

Ryan Prechel Puntos 1050

Hay al menos tres formas de desactivar el uso de JavaScript no intrusivo para la validación del lado del cliente:

  1. Añade lo siguiente al archivo web.config:

    <configuration>
      <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
      </appSettings>
    </configuration>
  2. Establezca el valor del System.Web.UI.ValidationSettings.UnobtrusiveValidationMode propiedad estática a System.Web.UI.UnobtrusiveValidationMode.None

  3. Establezca el valor del System.Web.UI.Page.UnobtrusiveValidationMode a la propiedad de instancia System.Web.UI.UnobtrusiveValidationMode.None

Para desactivar la funcionalidad por página, prefiero establecer la opción Page.UnobtrusiveValidationMode utilizando la directiva de página:

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

28voto

denver Puntos 653

La validación no intrusiva está activada por defecto en la nueva versión de ASP.NET. La validación no intrusiva pretende disminuir el tamaño de la página sustituyendo el JavaScript en línea para realizar la validación por una pequeña biblioteca de JavaScript que utiliza jQuery.

Puedes deshabilitarlo editando web.config para incluir lo siguiente:

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

O mejor aún configurarlo adecuadamente modificando el método Application_Start en 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 página 399 de Beginning ASP.NET 4.5.1 in C# and VB ofrece una discusión sobre el beneficio de la validación no intrusiva y un recorrido para configurarla.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X