這是的RegisterClientScriptBlockRegisterClientScriptBlock方法調用中的Type參數的意義是什麼?
Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "key","scriptblock", True)
示例爲什麼該方法需要的類型作爲第一個參數?
謝謝。
這是的RegisterClientScriptBlockRegisterClientScriptBlock方法調用中的Type參數的意義是什麼?
Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "key","scriptblock", True)
示例爲什麼該方法需要的類型作爲第一個參數?
謝謝。
來自MSDN文檔:「客戶端腳本由其鍵和類型唯一標識,具有相同鍵和類型的腳本被認爲是重複的。
基本上它給你一個額外的方式來唯一標識你的腳本。您可以在不同類型的控件中使用相同的鍵值。
我想知道這個我自己。就我在Reflector中看到的,它不直接被RegisterClientScriptBlock()使用,它只被傳遞給ScriptKey類的GetHashCode()方法使用。在那裏,它可能用來唯一標識腳本塊,而不僅僅是用戶提供的鍵,因爲它鏈接到指定的類型。
There a post on why this could lead to trouble,但我從來沒有遇到過這種情況。它歸結爲:當你從具有這段代碼的控件繼承時,GetType
將返回其他內容。這樣,關鍵就會有所不同,如果您的網頁上同時有兩個控件,則會再次添加該腳本。這可能會導致JavaScript問題。
解決方案將不使用GetType
,而是使用typeof()
。在VB.Net:
Page.ClientScript.RegisterClientScriptBlock(GetType(MyClass), "key","scriptblock", True)
但是,這是一個例外情況。
到博客文章的鏈接似乎已經死亡。這裏有人引用OP:http://alen.malhasoglu.com/2010/02/08/when-using-registerclientscript-do-not-use-this-gettype/ – 2016-12-02 09:38:20