2008-09-23 93 views
7

我對.net的使用經驗有限。我的應用程序拋出一個錯誤this.dateTimeFormat是未定義的,我跟蹤到已知的ajax錯誤。發佈的解決方法說:.net - 您如何註冊啓動腳本?

「註冊下面的啓動腳本:」

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

那麼,如何做到這一點?我是否將腳本添加到我的aspx文件的底部?

回答

9

你會使用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

因此,韋恩我會把你的JavaScript的頭?我是否需要在名爲「myscript」的函數中包裝「string str = ...」? – mrjrdnthms 2008-09-24 00:00:04

0

把它放在頁面的頁眉部分

2

我在web應用程序有同樣的問題(this.datetimeformat是不確定的),的確是由於Microsoft Ajax中的一個錯誤,並且此函數會覆蓋MS Ajax中的錯誤導致函數。

但上面的代碼有一些問題。這是正確的版本。

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

在代碼隱藏文件中放入網頁的Page_Load事件。如果您使用的是母版頁,請將它放在您的子頁面中,而不是母版頁中,因爲子頁面中的代碼將在母版頁之前執行,並且如果這在母版頁的代碼隱藏中,您仍然會得到如果您在子頁面上使用AJAX,則會出現錯誤。