2013-03-06 46 views
0

在ASP.NET中,我们与呼叫定义JS-功能:ASP.NET呼叫定义JS-函数的RegisterStartupScript

Page.ClientScript.RegisterStartupScript(GetType(), "", "JSFuncNameHere();", true); 

我在想:

  • 为什么没有任何方法,其名称如下:Page.ClientScript.CallJSScript(“someJSFunc”);
  • 为什么upper-method需要反射方法GetType()?有些东西在运行时没有定义,是吗?
  • 为什么我需要第二个参数key?正如我测试过的,我可以将它留空,并调用已有的JS函数。

回答

1
  • 为什么没有任何方法,它有一个名字,如:Page.ClientScript.CallJSScript( “someJSFunc”);

可能是因为这是更通用的解决方案,因为只需添加2个字符即可获得相同的结果,如果需要,您可以添加参数和其他任何内容。

  • 为什么upper-method需要反射方法GetType()?有些东西在运行时没有定义,是吗?
  • 为什么我需要第二个参数键?正如我测试过的,我可以将它留空,并调用已有的JS函数。

对于这两个同样的原因 - 该方法将检测您是否多次运行相同的脚本,在这种情况下,只需调用一次即可。这两个参数是它如何识别重复的手段 - 一个关键是不够的,因为另一个库中的另一个类可能使用相同的键 - 所以您需要传入您自己的类的类型以确保脚本在执行时你想要它。

+1

值得指出的是'RegisterStartupScript'的MSDN文档 - http://msdn.microsoft.com/en-AU/library/z9h4dk8y.aspx - 为“备注”中的点2和3提供了答案。当试图确定方法参数的目的时,MSDN应该*始终*成为您的第一站:) – Snixtor 2013-03-06 22:04:03