Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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
在自定义控件中处理javascript的最佳方法?_Javascript_Asp.net_Webforms_Custom Controls - Fatal编程技术网

在自定义控件中处理javascript的最佳方法?

在自定义控件中处理javascript的最佳方法?,javascript,asp.net,webforms,custom-controls,Javascript,Asp.net,Webforms,Custom Controls,在ASP.Net中,我制作了一些自定义控件。我使用了jQuery,它也起到了作用。好吧,我现在有一个问题(很明显,但“糟糕”的解决办法)是,对于每个用户控件,我需要从pageLoad($(document.ready无法与更新面板一起工作) 那么现在我的问题来了。我需要将两个自定义控件附加到pageLoad事件 这样做的最佳方式是什么 我不能这么做 old_pageLoad=pageLoad pageLoad=function(){... old_pageLoad();} 因为这些自定义控件可

在ASP.Net中,我制作了一些自定义控件。我使用了jQuery,它也起到了作用。好吧,我现在有一个问题(很明显,但“糟糕”的解决办法)是,对于每个用户控件,我需要从
pageLoad
$(document.ready
无法与更新面板一起工作)

那么现在我的问题来了。我需要将两个自定义控件附加到
pageLoad
事件

这样做的最佳方式是什么

我不能这么做

old_pageLoad=pageLoad
pageLoad=function(){... old_pageLoad();}
因为这些自定义控件可以在一个页面上使用多次,并且脚本需要为每个控件实例运行,再加上如果页面上有3个不同的自定义控件会怎么样

我唯一想到的方法是这样的,看起来非常骇人听闻:

old_pageLoad_<%= MyStaticClass.GetUniqueID() %>=pageLoad;
pageLoad=function(){... old_pageLoad_<%= MyStaticClass.GetUniqueID() %>();}
old_upageload_uu=pageLoad;
pageLoad=function(){…old_pageLoad}
有没有更好的方法来处理这样的功能冲突


我也看到过,但它所暗示的行为对我来说似乎比我目前所做的更糟糕

使用
脚本管理器的方法。在注册脚本时传入对控件的引用,这样可以确保每当更新控件时(无论是在加载第一页时,还是在更新UpdatePanel时),都会运行初始化脚本。

另一种方法是添加一个处理程序,在异步回发结束时调用Javascript方法。我多次这样做是为了重新初始化jQuery对话框。例如

$().ready(function() {
  myInitMethod();
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myInitMethod);
});

function myInitMethod() }
  // Init code
}

是的,但是我必须将我的javascript视为字符串(在codebehind中),这意味着没有语法突出显示,您必须求助于字符串concat或字符串替换来插入服务器端stuff@Earlz:这就是为什么您将大部分代码放在外部.js文件中,而只放一个简单的函数调用(可能带有特定于控件的参数)在RegisterStartupString的脚本中。我使用自定义JS编写器来构建参数字符串,这样我就不必担心转义之类的问题。我已经尝试过了,但是当我需要读取10个不同内容的值时,一个函数的10个参数有点长。Earlz:它仍然是这样工作的。如果是,请传入一个对象或数组你有很多情人。