2008-09-23 8 views
7

J'ai une expérience limitée avec .net. Mon application génère une erreur this.dateTimeFormat est indéfinie, que j'ai retracée jusqu'à un bug ajax connu. La solution affichée dit:.net - Comment enregistrer un script de démarrage?

« enregistrer les informations suivantes en tant que script de démarrage: »

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

Alors, comment dois-je faire cela? Est-ce que j'ajoute le script au bas de mon fichier aspx?

Répondre

9

QU'AVEC 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

Alors Wayne je mettrais votre javascript dans l'en-tête? Dois-je envelopper "string str = ..." dans une fonction appelée "myscript"? – mrjrdnthms

+0

Non, vous devez simplement ajouter ce code dans le code-behind, très probablement dans la méthode de chargement de page. "MyScript" est juste un nom, donc vous pouvez vérifier si ce script a déjà été chargé. Le code ci-dessus est écrit en C# – Wayne

+0

Je le mettrais de loin dans un fichier externe. Il n'y a rien ici qui doit être en ligne. –

0

Mettez dans la partie d'en-tête de la page

2

J'ai eu le même problème dans mon application web (this.datetimeformat est non définie), en effet elle est due à un bogue dans Microsoft Ajax et cette fonction remplace la fonction provoquant l'erreur dans MS Ajax.

Mais il y a quelques problèmes avec le code ci-dessus. Voici la bonne version. Mettez dans l'événement Page_Load de votre page Web dans le fichier codebehind. Si vous utilisez des pages maîtres, placez-les dans la page de votre enfant, et non dans la page principale, car le code des pages enfants s'exécutera avant la page principale et s'il se trouve dans le code derrière la page principale, vous obtiendrez toujours l'erreur si vous utilisez AJAX sur les pages enfants.

Questions connexes