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关闭),我建议重新打开。