4

我想我总结了标题中的问题。这里有一些进一步的阐述......

我有一个在多个地方使用的网络用户控件,有时在给定页面上不止一次。

Web 用户控件具有一组特定的 JavaScript 函数(主要是 jQuery 代码),这些函数包含在 *.js 文件中并自动插入到页眉中。

但是,当我想在一个页面上多次使用该控件时,*.js 文件会被包含“n”次,因此,浏览器会混淆它应该在哪个控件上执行哪个功能.

为了解决这个问题,我需要做什么?我整天都在盯着这个,我很茫然。

非常感谢所有评论。

杰森

4

3 回答 3

4

如果问题仅仅是同一个文件被多次嵌入并导致冲突,请考虑使用RegisterClientScriptInclude. 如果您对所有对 RegisterClientScriptInclude 的调用使用相同的标识符,则只会嵌入该文件的一个实例:

http://msdn.microsoft.com/en-us/library/2552td66.aspx

但是,如果问题是您的方法正在被调用,但他们不知道要操作页面上的哪些控件,那么您需要弄清楚如何为您的 JS 提供一些context。在客户端定义一个表示您的控件的 JavaScript 对象,并在服务器端发出调用,该调用将使用您将在其上操作的控件的客户端 ID 实例化它。

于 2010-04-12T21:21:27.590 回答
1

我们CustomValidator用于验证用户控制。该控件可以正常工作,直到您在同一页面上放置两个控件实例,因为它们引用完全相同的 JavaScript 函数,只有一个控件可以工作。解决方法是,我们在 JavaScript 函数名称中附加了控件 ID。

Validate_SAPDepartment<% =ControlId %>(oSrc, args) {...}

在代码隐藏中,我们分配了ClientValidationFunction

CustomValidator1.ClientValidationFunction = "Validate_SAPDepartment" + this.ControlId

这可能不是正确的方法,但它有效。

于 2012-02-01T09:42:05.347 回答
0

我以前也有过这种情况。您使用 ScriptManager 向页面注册一个单独的 JavaScript 文件。如果您愿意,您可以将其作为嵌入到 dll 中的资源文件进行流式传输。然后,您只需从您的控件调用函数。

否则,一个完全独立的 jquery 文件也可以工作。

于 2010-04-12T21:16:23.453 回答