RegisterClientScriptBlock参数在实际场景中使用?
http://i.stack.imgur.com/dVjHt.jpg
我从来没有理解这个类的Control
, type
, key
用法的真实用法。
一般来说,我总是使用: 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)来指定此参数,以检索正在注册脚本的控件的类型 。
我想关键是确保一个代码块不包含两次? 或者,如果再次使用相同的密钥,它会发出警告?