2008-09-23 20 views
7

Tôi có kinh nghiệm hạn chế với .net. Ứng dụng của tôi ném một lỗi this.dateTimeFormat là không xác định mà tôi theo dõi xuống một lỗi ajax đã biết. Cách giải quyết posted nói:.net - Làm cách nào để bạn đăng ký tập lệnh khởi động?

"Đăng ký sau như một kịch bản khởi động:"

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

Vậy làm thế nào để tôi làm điều này? Tôi có thêm tập lệnh vào cuối tệp aspx của mình không?

Trả lời

9

Bạn sẽ sử dụng 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

Vì vậy, Wayne tôi sẽ đặt javascript của bạn trong tiêu đề? Tôi có cần bọc "string str = ..." trong một hàm có tên "myscript" không? – mrjrdnthms

+0

Không, bạn chỉ cần thêm mã này vào mã phía sau, rất có thể trong phương pháp Tải trang. "MyScript" chỉ là một tên, vì vậy bạn có thể kiểm tra xem tập lệnh cụ thể đó đã được tải chưa. Đoạn mã trên được viết bằng C# – Wayne

+0

Tôi sẽ đặt nó vào một tệp bên ngoài. Không có gì ở đây cần phải được nội tuyến. –

0

Đặt nó trong phần tiêu đề của trang

2

tôi đã cùng một vấn đề trong ứng dụng web của tôi (this.datetimeformat là undefined), thực sự đó là do một lỗi trong Microsoft Ajax và chức năng này vượt qua lỗi gây ra chức năng trong MS Ajax.

Nhưng có một số vấn đề với mã ở trên. Đây là phiên bản chính xác.

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

Đặt sự kiện Page_Load của trang web vào tệp codebehind. Nếu bạn đang sử dụng trang chính, hãy đặt trang đó vào trang con của bạn chứ không phải trang chính, vì mã trong trang con sẽ thực thi trước trang chính và nếu trang này nằm trong trang mã hóa của trang cái, bạn sẽ vẫn nhận được lỗi nếu bạn đang sử dụng AJAX trên các trang con.

Các vấn đề liên quan