2011-02-11 66 views
2

我怀疑我的问题是围绕着对自定义事件处理程序如何在ASP.NET中工作的理解不足。我读过几篇文章,但目标受众一直在尝试与我不同的东西。强制一个事件处理程序在每个回发中触发一个自定义控件

我已经创建了一个UserControl,它在Init事件期间动态地放置在我的页面上。它填充并且工作得很好,但是我在回发期间如何从数据中检索数据,我一直在挠头。

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

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

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

的问题,是在客户端生成这些选择项目和服务器没有任何知识他们(例如,没有runat =“服务器” - 它是纯HTML)。

在任何帖子[回]上,我想要一个事件处理程序在我的自定义控件中触发,使我能够检查此容器DIV中的元素。无论用户是否做出选择(控件可能已预先填充,在这种情况下,我仍然想知道其中的选择是什么),我希望此事件能够触发。

什么我之后是这样的:

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

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

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

回答

2

如果你给你的inputs name属性,该值将在Request.Form

+0

感谢,Yads显示出来,这是非常有帮助的,并且运行良好。我还有一个问题是确保事件处理程序(我从Request.Form中获取值)始终触发。我正在使用第三方控件,因此已经捕获了TextChanged和SelectedIndexChanged事件,但这很丑陋,因为某些用例触发了多个事件(并且根本没有触发)。这与你的回答有些不相干,但是把我的东西联系在一起。我能以某种方式强制一个事件处理程序始终在表单发布时调用? – 2011-02-14 00:24:11

相关问题