这是RegisterClientScriptBlock的一个例子
Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "key","scriptblock", True)
为什么方法需要将类型作为第一个参数?
感谢。
答案 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)
但同样,这是一个例外情况。