2011-11-28 63 views
11

http://i.stack.imgur.com/dVjHt.jpgRegisterClientScriptBlock参数在真实场景中的使用情况?

enter image description here

我永远无法理解的Controltypekey此类用途的实际使用。

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

,但现在我真的想明白了。


MSDN:

控制

如此 “被注册的客户端脚本控制” ......?注册它有什么不同?脚本将在页面的头部..

类型

类型 “的客户端脚本块的类型” ???它的JavaScript。为什么他想要我另一种类型?

重点:“独特的indentifier”

这我能理解 - 对于案件后删除......但我会为一些更高级的解释

爱我可以有请真实生活场景其中我真实必须与这些参数玩?

+1

尼斯确实问题。我也想知道相同的答案... – Tarik

回答

2

中最重要的部分是控制 你想,如果你有用户控件注册脚本 例如其控制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); 
+0

您确定吗? javascript将访问整个html页面,所以即使您注册了控件,也可以访问页面上的每个元素。 –

+1

你是对的 但是当你使用UpdatePanel时会出现问题 [link](http://www.dotnetcurry.com/ShowArticle.aspx?ID=200) - –

0

看MSDN上后,我发现略有不同参数的方法,但我想答案应该给你更深入的了解:(http://msdn.microsoft.com/en-us/library/bb350750.aspx):

控制:由使用这种方法注册的客户端脚本块仅当控件表示正在更新的UpdatePanel控件内部的控件时才会发送到页面

类型:该参数通常通过使用typeof运算符(C#)或对GetType运算符(Visual Basic中)来检索被注册脚本控制的类型指定。

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

0

的场景使用参数控制通过引用control.Page.ClientScript.RegisterClientScriptBlock做出System.Web.UI.ClientScriptManager.RegisterClientScriptBlock调用内部方法System.Web.UI.ScriptRegistrationManager.RegisterClientScriptBlock背后System.Web.UI.ScriptManager.RegisterClientScriptBlock调用的方法。

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

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

这等同于调用:

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

参数来得心应手,当两种不同类型的尝试与注册脚本相同的字符串键。

+0

那么是什么使脚本独特?钥匙 ?或类型的组合加上一些东西?以及为什么构造函数想要从我控制&&类型?你能给一个真实的生活场景吗? –

+0

方法'System.Web.UI.ClientScriptManager.RegisterClientScriptBlock'在内部生成一个基于参数类型和键的值的新键。 –

+0

当两个不同的类型尝试使用相同的字符串键注册脚本时会发生什么? –

相关问题