在Page_Load之前处理事件

8
我有一个包含大量代码的asp.net网页,这些代码在页面的Page-Load事件中处理。我还在页面上放置了一个下拉框,希望使用新值重新加载页面,但在处理整个Page-Load代码之前,我想获取这个新值。 我正在尝试理解ASP.NET页面生命周期。
我应该将Page-Load代码移到以后的事件中,还是有一种方法可以在Page-Load事件开始之前获取下拉列表值?
谢谢!
3个回答

11

我建议使用Page_PreLoad而不是Page_Init,因为它会在处理完所有的PostBack数据后被触发。


我在使用PreLoad时比Init更顺利。在Init期间,我似乎无法获取ddl的SelectedValue,但是在PreLoad中可以。 - zkent

2
尝试使用Page_Init。

你是说我可以在 page_init 中获取下拉框的值吗? - zkent
答案显然比这更复杂,但这应该可以指引你朝着正确的方向前进。如果你将要经常使用Web表单,那么一定要非常熟悉页面生命周期。也许这会有所帮助:http://john-sheehan.com/blog/net-cheat-sheets - John Sheehan
是的,你可以在 Page_Init 中获取所选值。但是最好还是在 Init/Load 之外的事件中检索它(例如按钮单击等)。 - John Sheehan
1
button_click事件的问题在于它是在页面加载(page_load)之后处理的,而大部分代码都是在此时被处理的。如果我要根据选择重新加载页面,我希望避免不必要的处理。 - zkent

0
如前所述,Page_Init 是您想要的。但我敦促您尽可能使页面松耦合。首先了解MVP模式。此外,请确保大部分逻辑在您的领域对象中。
Page_Load 事件中不应该有太多代码。如果有,它应该被拆分成简洁的方法,以便您不会有疯狂的代码。

我继承了这段代码,并进行了大量重构,将代码移入类和方法中。但是,在页面加载之前,我仍然想要读取先前的值。 - zkent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接