2008-09-23 8 views
7

Ich habe begrenzte Erfahrung mit .net. Meine App gibt einen Fehler aus. Dieses.dateTimeFormat ist nicht definiert und ich habe einen bekannten Ajax-Fehler gefunden. Die Abhilfe geschrieben sagte:.net - Wie registrieren Sie ein Startskript?

„folgenden als Startskript registrieren:“

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

So wie ich das tun? Füge ich das Skript am Ende meiner Aspx-Datei hinzu?

Antwort

9

Sie 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

So Wayne würde ich Ihr Javascript in den Header setzen? Muss ich "string str = ..." in eine Funktion namens "myscript" schreiben? – mrjrdnthms

+0

Nein, Sie würden diesen Code einfach in den Code-Behind einfügen, höchstwahrscheinlich in der Page Load-Methode. "MyScript" ist nur ein Name, damit Sie überprüfen können, ob das betreffende Skript bereits geladen wurde. Der obige Code ist in C# – Wayne

+0

geschrieben. Ich würde dies bei weitem in eine externe Datei einfügen. Hier gibt es nichts, was inline sein muss. –

0

es in dem Kopfteil der Seite Put

2

ich das gleiche Problem in meiner Web-Anwendung hatte (this.datetimeformat ist nicht definiert), in der Tat verwenden würden, ist es aufgrund ein Fehler in Microsoft Ajax, und diese Funktion überspringt die fehlerverursachende Funktion in MS Ajax.

Aber es gibt einige Probleme mit dem obigen Code. Hier ist die richtige Version.

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

Setzen Sie das Page_Load -Ereignis Ihrer Webseite in die Codebehind-Datei. Wenn Sie Masterseiten verwenden, fügen Sie sie in die untergeordnete Seite und nicht in die Masterseite ein, da der Code in den untergeordneten Seiten vor der Masterseite ausgeführt wird und sich dies im Codebehind der Masterseite befindet der Fehler, wenn Sie AJAX auf den untergeordneten Seiten verwenden.

Verwandte Themen