2009-01-08 72 views

回答

4

來自MSDN文檔:「客戶端腳本由其鍵和類型唯一標識,具有相同鍵和類型的腳本被認爲是重複的。

基本上它給你一個額外的方式來唯一標識你的腳本。您可以在不同類型的控件中使用相同的鍵值。

1

我想知道這個我自己。就我在Reflector中看到的,它不直接被RegisterClientScriptBlock()使用,它只被傳遞給ScriptKey類的GetHashCode()方法使用。在那裏,它可能用來唯一標識腳本塊,而不僅僅是用戶提供的鍵,因爲它鏈接到指定的類型。

0

There a post on why this could lead to trouble,但我從來沒有遇到過這種情況。它歸結爲:當你從具有這段代碼的控件繼承時,GetType將返回其他內容。這樣,關鍵就會有所不同,如果您的網頁上同時有兩個控件,則會再次添加該腳本。這可能會導致JavaScript問題。

解決方案將不使用GetType,而是使用typeof()。在VB.Net:

Page.ClientScript.RegisterClientScriptBlock(GetType(MyClass), "key","scriptblock", True) 

但是,這是一個例外情況。

+0

到博客文章的鏈接似乎已經死亡。這裏有人引用OP:http://alen.malhasoglu.com/2010/02/08/when-using-registerclientscript-do-not-use-this-gettype/ – 2016-12-02 09:38:20

相關問題