2008-09-23 27 views
7

Tengo experiencia limitada con .net. Mi aplicación arroja un error this.dateTimeFormat no está definido, lo que rastreé hasta un conocido error ajax. La solución publicado dice:.net - ¿Cómo se registra una secuencia de comandos de inicio?

"Registrar los siguientes como un script de inicio:"

Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) 
{ 
if (!this._upperAbbrMonths) { 
this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames); 
} 
return Array.indexOf(this._upperAbbrMonths, this._toUpper(value)); 
}; 

Entonces, ¿cómo puedo hacer esto? ¿Agrego el script al final de mi archivo aspx?

Respuesta

9

que usaría ClientScriptManager.RegisterStartupScript()

string str = @"Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) { 
    if (!this._upperAbbrMonths) { 
     this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames); 
    } 
    return Array.indexOf(this._upperAbbrMonths, this._toUpper(value)); 
};"; 

if(!ClientScriptManager.IsStartupScriptRegistered("MyScript"){ 
    ClientScriptManager.RegisterStartupScript(this.GetType(), "MyScript", str, true) 
} 
+0

Entonces, Wayne, ¿pondría su javascript en el encabezado? ¿Debo ajustar "string str = ..." en una función llamada "myscript"? – mrjrdnthms

+0

No, simplemente agregaría este código en el código subyacente, muy probablemente en el método Carga de página. "MyScript" es solo un nombre, por lo que puede verificar si ese script en particular ya se ha cargado. El código anterior está escrito en C# – Wayne

+0

Me gustaría poner esto en un archivo externo. No hay nada aquí que deba estar en línea. –

0

ponerlo en la parte de la cabecera de la página

2

que tenía el mismo problema en mi aplicación web (this.datetimeformat no está definido), hecho que se debe a un error en Microsoft Ajax y esta función anula el error que causa la función en MS Ajax.

Pero hay algunos problemas con el código anterior. Aquí está la versión correcta.

string str = @"Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) { 
    if (!this._upperAbbrMonths) { 
     this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames); 
    } 
    return Array.indexOf(this._upperAbbrMonths, this._toUpper(value)); 
};"; 

ClientScriptManager cs = Page.ClientScript; 
if(!cs.IsStartupScriptRegistered("MyScript")) 
{ 
    cs.RegisterStartupScript(this.GetType(), "MyScript", str, true); 
} 

Coloque el evento Page_Load de su página web en el archivo codebehind. Si está utilizando páginas maestras, colóquela en la página de su hijo y no en la página maestra, porque el código en las páginas secundarias se ejecutará antes de la página maestra y, si está en el código detrás de la página maestra, seguirá recibiendo el error si está usando AJAX en las páginas secundarias.

Cuestiones relacionadas