我的asp.net页面上有一个checkboxlist和textbox控件,它们是动态创建并添加到页面的。当我填充值并提交表单时,值在到达服务器时为空。有什么帮助吗?
答案 0 :(得分:1)
它们是空的,因为它们在页面生命周期中被重新创建得太晚了。
在不知道ASP.NET Page Lifecycle中你添加控件的精确点(虽然我猜它是Page_Load或事件处理程序),但它是这样的:
(回传)
要解决此问题,您需要确保在生命周期中尽早创建控件。标准做法是将“控件创建”分解为单独的方法,并在CreateChildControls期间检查是否需要创建它们:
override CreateChildControls()
{
if(IsPostBack)
{
EnsureDynamicControlsAreAdded();
}
}
这样,如果它们确实需要在生命周期的最后阶段作为事件处理程序(例如Button_Click)添加,那么您也可以从那里调用相同的EnsureDynamicControlsAreAdded
方法,并且在下一次往返中,它们将在更早的时候创建。
答案 1 :(得分:0)
除了Rex M的答案之外,你可以尝试在“Page_Init
”事件中创建控件 - 这是页面生命周期中的第一个事件之一,我通常会在viewstateless页面中创建控件(注意:如果你这样做,不要用“if (!IsPostback)
”包围Page_Init处理程序的内容 - 这将阻止它按预期工作。