ASP.NET:如何重新填充动态添加的控件以安抚动态添加的RequiredFieldValidator?

时间:2012-03-23 21:12:06

标签: asp.net webforms dynamic-controls

我正在基于数据库中的数据向页面添加动态控件以生成RadioButtonList问题。

有时问题是必需的,在这种情况下,从数据库中检索数据并填充RadioButtonList后,我会为RadioButtonList动态添加RequiredFieldValidator。

问题出现在回发上,当我在Page_Load()中执行Page.Validate()时总是失败。我发现这是因为控件在回发后重新添加,但它们不会被用户的回复重新填充。

我的问题是:

一旦点击“提交”,我何时可以获取用户的响应,我在哪里存储它,以及将其恢复的最佳方式是什么,以便Page.Validate()通过正确的响应来验证控件?

1 个答案:

答案 0 :(得分:3)

而不是在Page_Load(或在page_Load中调用的函数中)中创建验证控件,而不是在Page_Init中执行此操作

有关详细信息,请参阅Page Lifecycle

在页面生命周期中,将其放在Page_Init中允许在每个页面加载时创建控件,但是在应用视图状态值之前。这意味着创建了控件,然后应用了用户选择。

如果在Page_Load中有它,则在应用Viewstate值之后创建控件。这意味着控件只是在应用了视图状态后从头开始创建,将所有内容重置为默认值。

实际上,this page说得更好:

  
      
  • 在页面初始化期间,页面上的控件可用   设置每个控件的UniqueID属性。任何主题也适用   到页面。如果当前请求是回发,则返回数据   尚未加载并且尚未控制属性值   从视图状态恢复到值。

  •   
  • 在加载期间,如果是当前的   请求是回发,控件属性加载信息   从视图状态和控制状态恢复。

  •   
  • 当你使用Page_Init   必须动态创建控件。每次创建控件   页面运行的时间。最好的地方是在   Page_Init功能。
  •