RegisterClientScriptBlock参数在实际场景中使用?

http://i.stack.imgur.com/dVjHt.jpg

在此处输入图像描述

我从来没有理解这个类的Controltypekey用法的真实用法。

一般来说,我总是使用: this , GetType() , "xx"

但现在我真的想了解。


msdn:

控制 :“正在注册客户端脚本的控件”

所以…? 谁注册了它有什么区别? 该脚本将在页面的头部…

键入 :“客户端脚本块的类型”

类型??? 它的JavaScript。 为什么他想要我的另一种类型?

关键 :“一个独特的标识符”

我可以理解 – 对于后来删除的案例……但我喜欢一些更高级的解释

我能不能取悦,一个真实的生活场景,我真的必须玩那些参数?

最重要的部分是控制你要注册脚本的html标签中的哪个控件,例如,如果你有用户控件,并且你想运行脚本只是为了那个用户使用这一行

 ScriptManager.RegisterStartupScript(this, this.GetType(), "alertscript", "document.getElementById('userControl_h1TAG')", true); 

但是当您想要将块和脚本注册到该页面的所有部分时,请在用户控件的CS代码中使用此行:

 ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "document.getElementById('page_h1TAG')", true); 

System.Web.UI.ScriptManager.RegisterClientScriptBlock方法在后台调用内部方法System.Web.UI.ScriptRegistrationManager.RegisterClientScriptBlock ,它使用参数控件通过引用control.Page.ClientScript.RegisterClientScriptBlock来调用System.Web.UI.ClientScriptManager.RegisterClientScriptBlock control.Page.ClientScript.RegisterClientScriptBlock

所以,实际上当你打这样的电话时:

 MyScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertScript", "alert('hi')", true); 

它与调用相同:

 this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alertScript", "alert('hi')", true); 

当两种不同类型尝试使用相同的字符串键注册脚本时, 类型参数会派上用场。

在MSDN上查找后,我发现该方法的参数略有不同,但我认为答案应该会给你更多的见解:( http://msdn.microsoft.com/en-us/library/bb350750.aspx ):

控制仅当控件表示正在更新的UpdatePanel控件内的控件时,才会将使用此方法注册的客户端脚本块发送到页面。

类型 :通常使用typeof运算符(C#)或GetType运算符(Visual Basic)来指定此参数,以检索正在注册脚本的控件的类型

我想关键是确保一个代码块不包含两次? 或者,如果再次使用相同的密钥,它会发出警告?