强制事件处理程序在每次回发时触发自定义控件

时间:2011-02-11 20:22:48

标签: asp.net

我怀疑我的问题围绕着对自定义事件处理程序如何在ASP.NET中工作的理解不足。我已经阅读了几篇文章,但目标受众一直在尝试与我不同的东西。

我在Init事件期间创建了一个动态放置在我页面上的UserControl。它填充并且工作得很好,但是我还在试图在回发期间从中检索数据时不知疲倦。

它实际上是一个多重组合框,完全使用客户端JavaScript(我大量使用jQuery)进行操作。在控件容器元素中,我呈现一个包含所有选定项的空DIV元素。当用户选择项目时,我在该容器DIV中生成包含一些标记的DIV。我对服务器端感兴趣的是几个INPUT字段的内容。

选择项目后,呈现的HTML看起来像:

<div class="multiPickContainer">
  <div class="multiPickItem">
    <input type="text" />
    <input type="hidden" />
  </div>
</div>

问题当然是,这些选定的项目是在客户端生成的,服务器对它们一无所知(例如,没有runat =“server” - 它是纯HTML)。

在任何帖子[back]上,我想在我的自定义控件中触发事件处理程序,这使我能够检查此容器DIV中的元素。无论用户是否做出任何选择,我都希望这个事件能够触发(控件可能已经预先填充,在这种情况下我还是想知道它中有哪些选项)。

我所追求的是这样的:

private GenerateControl(TemplateControl page){
  var control = page.LoadControl("~/MyControl.ascx") as MyControl;
  control.OnPostBack += HandlePostback;
}

我可能完全偏离轨道,这可能实际上是不可能的(或者是一个愚蠢的想法)。我能想到的唯一选择是发出实际的ASP.NET控件并挂钩内置的事件处理程序。

任何人都可以提出任何建议,或者指出任何讨论创建自定义事件处理程序的优秀文献吗?

1 个答案:

答案 0 :(得分:2)

如果您为inputs提供了名称属性,则值将显示在Request.Form