RegisterClientScriptBlock方法调用中Type参数的意义是什么?

时间:2009-01-08 14:18:55

标签: asp.net javascript

这是RegisterClientScriptBlock的一个例子

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

为什么方法需要将类型作为第一个参数?

感谢。

3 个答案:

答案 0 :(得分:4)

来自MSDN文档:“客户端脚本由其密钥及其类型唯一标识。具有相同密钥和类型的脚本被视为重复。”

基本上,它为您提供了另一种唯一标识脚本的方法。您可以在不同类型的控件中使用相同的键值。

答案 1 :(得分:1)

我自己也在想这件事。就我在Reflector中看到的那样,它不是由RegisterClientScriptBlock()直接使用的,它只传递给ScriptKey类的GetHashCode()方法使用。除了用户提供的密钥之外,它可能用于唯一地标识脚本块,因为它链接到指定的类型。

答案 2 :(得分:0)

a post on why this could lead to trouble,但我从未真正遇到过这个问题。它归结为:当你从具有这段代码的控件继承时,GetType将返回其他内容。这样,如果您在页面上同时拥有两个控件,则键将有所不同,并且将再次添加脚本。这可能会导致javascript问题。

解决方案是不使用GetType而是使用typeof()。在VB.Net中:

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

但同样,这是一个例外情况。