Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ASP用户控件中的JavaScript函数定义_Asp.net_Javascript_Vb.net_User Controls - Fatal编程技术网

Asp.net ASP用户控件中的JavaScript函数定义

Asp.net ASP用户控件中的JavaScript函数定义,asp.net,javascript,vb.net,user-controls,Asp.net,Javascript,Vb.net,User Controls,可能重复: 我在用户控件中定义了一个JavaScript函数 如果我的.aspx页面上有多个用户控件实例,如何防止生成的HTML代码中出现多个函数定义?能否将javascript代码放在一个单独的.js文件中,并从网页或母版页引用该common.js文件?您需要使用page.ClientScript管理器 以下代码每页只注册一次代码 if (!page.ClientScript.IsClientScriptBlockRegistered(tType, "MyScript")) { p

可能重复:

我在用户控件中定义了一个JavaScript函数


如果我的.aspx页面上有多个用户控件实例,如何防止生成的HTML代码中出现多个函数定义?

能否将javascript代码放在一个单独的.js文件中,并从网页或母版页引用该common.js文件?

您需要使用page.ClientScript管理器

以下代码每页只注册一次代码

if (!page.ClientScript.IsClientScriptBlockRegistered(tType, "MyScript"))
{
     page.ClientScript.RegisterClientScriptBlock(tType, "MyScript", sScript);
}
您还可以确保只添加一次*.js文件

if (!page.ClientScript.IsClientScriptIncludeRegistered(tType, "MyScriptFile"))
{
     page.ClientScript.RegisterClientScriptInclude(tType,"MyScriptFile","MyJavaScript.js")
}

这更有道理,而且这也是相当普遍的做法。我不同意。为了代码的可重用性,应该在用户控件中定义函数,而不是全局定义函数。这就像是在全局而不是在类中定义类成员函数。这将进入代码隐藏,任何时候都是可以接受的,ClientScript在呈现阶段之前不会呈现它。它不是“如果未注册”而不是“如果注册”?感谢您捕捉到我的输入错误!tType将是父对象的类型,以便为您注册的脚本生成更唯一的键。因此,您可以使用这个.GetType(),以便指示“MyScript”是指定给控件的类型的。因此,对于不同的对象类型(或控件),可以有多个“MyScript”JS块。我们这里有一个dupe乒乓(orig作为dupe关闭),我建议重新打开。