【问题标题】:Add client-side events to ASP.Net custom control at runtime在运行时将客户端事件添加到 ASP.Net 自定义控件
【发布时间】:2011-02-04 22:39:08
【问题描述】:

我正在构建一个实现IScriptControl 的 ASP.net 自定义控件。我希望我的控件的其他用户能够将客户端事件处理程序分配给控件。不幸的是,IScriptControl 生成的 JS 总是注入到渲染页面的最底部(见下文),因此任何在 ASPX 页面中分配事件处理程序的尝试都会失败,因为代码执行得太早了。

...
<script type="text/javascript"> 
//<![CDATA[
Sys.Application.initialize();
Sys.Application.add_init(function() {
    $create(MyNamespace.MyControl, {}, null, null, $get("my_control_id"));
});
//]]>
</script>
</form>

在页面加载时将事件处理程序分配给实例化控件的正确方法是什么?

【问题讨论】:

    标签: asp.net javascript asp.net-ajax


    【解决方案1】:

    检查一下

    Sys.Application.add_load(handler);
    

    【讨论】:

      【解决方案2】:

      实际上,他们可以使用任何 javascript 库(如 jQuery)添加事件处理程序:

      $(document).ready(function(){
      
       $('#<%= my_control_id.ClientId%>').click(function(e){
        // do something...
       });
      
      });
      

      HTH。

      【讨论】:

      • 这是一个复杂的小自定义控件,要处理的事件不对应任何特定DOM元素上的事件。该处理程序必须应用于在 IScriptControl 生成的代码中创建的对象。不幸的是,执行任何其他脚本块之后的对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多