3

所以我有一个在页面上多次存在的用户控件。从后端我可以调用 userControl1.someFunction(); 并指定我要为其调用 someFunction() 的用户控件。但是,如果我在用户控件的前端有一个 java 脚本函数,我就不能为单个用户控件调用它。我所要做的就是调用 javaFunction(),但这并没有指定我要调用哪个用户控件。所以这就是我想要做的,clientsideUserControl1.javaFunction(); 这可能吗?我一直在做的是动态生成函数名 IE:clientsideUserControl1_javaFunction(),但我觉得必须有更好的方法来做到这一点。

4

3 回答 3

3

通常您可以拥有一个功能并让它在整个页面上执行它的工作,或者您可以将其更改为采用参数(对您感兴趣的用户控件的引用)

这样你就不需要拥有同一个 javascript 函数的多个副本。

所以而不是

function CLIENTID_javascriptFunction{
}

您将在全球范围内发挥作用:

function javascriptFunction(id){

}

并使用您感兴趣的 dom 对象的 id 调用它。(使用 ClientID 获取控件的 DOM id)

于 2012-07-03T17:56:51.590 回答
1

事实证明,在这种情况下,最好使用服务器控件而不是用户控件。服务器控件的制作似乎有点复杂,但它们确实保护了 javascript 函数的范围。

这是一个讨论差异的链接。 http://www.hotscripts.com/forums/asp-net/31174-difference-between-user-control-custom-server-controls.html

于 2012-07-12T17:20:20.393 回答
-1

一种可能的解决方案是:

function <%= ClientID %>javaFunction()
{
  //code here
}

您将拥有每个用户控件的函数声明,其中包含控件的客户端 ID 和函数名称

于 2012-07-03T17:53:41.133 回答