Estoy creando una aplicación web con Visual Studio 2012. I'm 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 javascript codeds
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 del 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>
Necesita una clave web.config para activar el modo de validación pre 4.5.
Más información en ValidationSettings:UnobtrusiveValidationMode:
Especifica cómo ASP.NET habilita globalmente los controles del validador incorporado para usar JavaScript no intrusivo para la lógica de validación del lado del cliente.
Tipo: UnobtrusiveValidationMode
Valor por defecto: Ninguno
Observaciones: Si este valor clave se establece en "None" [por defecto], la aplicación ASP.NET utilizará el comportamiento anterior a la versión 4.5 (JavaScript en línea en las páginas 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 atributos de datos HTML5 y el JavaScript de una referencia de script añadida para la validación del lado del cliente lógica. ; Ejemplo: ;
En lugar de desactivar una nueva función, opté 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 msdn blog post que destaca algunas de las ventajas de los mapeos de recursos de script. De particular interés para mí fue el control centralizado sobre la entrega de los archivos de script basado en "debug=true", EnableCDN, etc.
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.
Puede deshabilitarla editando el archivo 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 proporciona una discusión sobre el beneficio de la validación no intrusiva y un recorrido para configurarla.
Para aquellos que buscan RouteConfig. Se añade automáticamente cuando se hace un nuevo proyecto en visual studio a la carpeta App_Code. El contenido se parece a esto:
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);
}
}
}