2011-01-29 24 views
5

Tôi có thường xuyên Sub sau đây trong dự án vb.net tôi mà chạy tốt, nhưng tôi không ngừng được xây dựng cảnh báo:Làm thế nào để sửa chữa RegisterClientScriptBlock là cảnh báo cũ trong Visual Studio

'Công Overridable Sub RegisterClientScriptBlock (key Như Chuỗi, tập lệnh Là chuỗi) 'đã lỗi thời:' Phương án được đề xuất là ClientScript.RegisterClientScriptBlock (Loại loại, chuỗi khóa, chuỗi tập lệnh). truy cập http://go.microsoft.com/fwlink/?linkid=14202

Tôi nghĩ sẽ tốt nhất nếu tôi sử dụng đúng phương pháp. Tôi đã làm theo hướng dẫn ở đây - http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock.aspx nhưng nó không tạo ra một số lượng lớn ý nghĩa. Bất kỳ trợ giúp sẽ được đánh giá cao.

Protected Sub DBC_MEMBER_IsActive_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DBC_MEMBER_IsActive.CheckedChanged 
     Dim showmessage As String = "Warning!\r\n \r\n Unticking this box will delete this Member from the Databse. \r\n \r\n If you are unsure, make sure the box remains ticked" 
     Dim alertScript As String = "<script language=JavaScript> " 
     alertScript += "alert('" & showmessage & "');" 
     alertScript += "</script" & "> " 

     If Not ClientScript.IsClientScriptBlockRegistered("alert") Then 
      Me.RegisterClientScriptBlock("alert", alertScript) 
     End If 
    End Sub 

Trả lời

4

Hãy thử điều này:

If Not ClientScript.IsClientScriptBlockRegistered(GetType(YourPageClass), "alert") Then 
    ClientScript.RegisterClientScriptBlock(GetType(YourPageClass), "alert", alertScript) 
End If  

(Thay thế YourPageClass bởi tên của lớp trang của bạn).

Các thông số loạikhóa được sử dụng để ngăn việc đăng ký cùng một tập lệnh trong cùng một trang. Thông số loại có thể không có ý nghĩa khi bạn đăng ký tập lệnh trực tiếp trong trang (như bạn làm). Tuy nhiên, nó cho phép ví dụ để tránh xung đột tiềm ẩn giữa các điều khiển tùy chỉnh khác nhau đăng ký tập lệnh với cùng thông số khóa.

+0

Tôi đã quản lý để làm cho nó hoạt động dựa trên Bản cập nhật của bạn, nhưng tôi phải sử dụng như sau: Nếu Not ClientScript.IsClientScriptBlockRegistered (GetType (Thành viên), "cảnh báo") Sau đó, ClientScript.RegisterClientScriptBlock (GetType (Thành viên), "cảnh báo", alertScript) Kết thúc Nếu – James

+0

@James: bạn nói đúng, tôi là loại C# của anh chàng nên tôi trộn tất cả lên . Từ khóa chính xác là 'GetType' tất nhiên (cập nhật câu trả lời). –

+0

Tôi nghĩ rằng đối với loại bạn nên sử dụng 'Me.GetType()' (trong C# nó là 'this.GetType()'). – Matt

1

thay đổi Me.RegisterClientScriptBlock ("alert", alertScript) để ClientScript.RegisterClientScriptBlock (typeof Me, "cảnh báo", alertScript)

Tôi không chắc chắn nếu điều này là đúng cú pháp trong vb. net cho "TypeOf Me". Trong C# nó sẽ trông như thế này: ClientScript.RegisterClientScriptBlock (typeof (this), "alert", alertScript);

+0

Xin chào, tôi đã thử đề xuất của bạn nhưng vb đang nói 'Có' là bắt buộc ... – James

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