在自定义控件中处理JavaScript的最佳方法是什么?

时间:2010-07-27 23:05:46

标签: javascript asp.net webforms custom-controls

在ASP.Net中,我有一些自定义控件。我利用了jQuery也帮助了它。好吧,我现在遇到的一个问题(显而易见的,但是“坏”的解决方法)是,对于每个用户控件,我需要从pageLoad内执行一些代码($(document).ready将无法使用更新面板)。

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

这样做的最佳方式是什么?

我不能只做

old_pageLoad=pageLoad
pageLoad=function(){... old_pageLoad();}

因为这些自定义控件可以在页面上多次使用,并且脚本需要为控件的每个实例运行,如果我在页面上有3个不同的自定义控件,该怎么办?

我提出的唯一方法就是这样看似超级hackish:

old_pageLoad_<%= MyStaticClass.GetUniqueID() %>=pageLoad;
pageLoad=function(){... old_pageLoad_<%= MyStaticClass.GetUniqueID() %>();}

有没有更好的方法来处理这样的功能冲突?

我也看过this MSDN article,但它的建议对我来说比我目前所做的更糟糕。

2 个答案:

答案 0 :(得分:1)

使用ScriptManager的{​​{3}}方法。在注册脚本时传入对控件的引用,这可确保在更新控件时(无论是在第一页加载时还是在更新UpdatePanel时)都运行初始化脚本。

答案 1 :(得分:0)

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

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

function myInitMethod() }
  // Init code
}
相关问题