【问题标题】:JavaScript Function Definition in ASP User Control [duplicate]ASP 用户控件中的 JavaScript 函数定义
【发布时间】:2010-04-08 18:19:43
【问题描述】:

可能重复:
User control javascript

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

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

【问题讨论】:

  • 我们这里有一个骗子乒乓球(orig 作为骗子被关闭了),我建议重新打开。

标签: asp.net javascript vb.net user-controls


【解决方案1】:

您需要使用 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 将是父对象的类型,以便为您的注册脚本创建更唯一的键。因此您可以使用 this.GetType(),因此请指明“MyScript”是您的控件类型所特有的。因此,您可以为不同的对象类型(或控件)拥有多个“MyScript”JS 块
【解决方案2】:

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

【讨论】:

  • 这更有意义,也是很常见的做法。
  • 我不同意。为了代码的可重用性,该函数应该在用户控件中而不是全局定义。这就像在全局而不是在类中定义类成员函数。
猜你喜欢
  • 2018-10-27
  • 2010-09-12
  • 2011-05-23
  • 2023-01-18
  • 1970-01-01
  • 2013-10-08
  • 2017-01-18
  • 2012-12-03
  • 1970-01-01
相关资源
最近更新 更多