因为.ascx文件在页面生命周期的早期自然呈现,如果我想更新.ascx部分之外的表单上的信息,如何刷新.ascx文件以反映更改,比如按钮点击(保存信息的那个)?
例如(伪代码):
Sub Page_load
'user control is naturally rendered here'
End Sub
Sub Button_Click
SaveStuff()
ReRenderUserControl()
End Sub
答案 0 :(得分:4)
如果您正在创建基于保存的数据构建的用户控件。你可以做的是创建一个方法来执行该构建,然后在页面和用户控件(伪代码)中调用它:
用户控件:
protected Page_Load(object sender, EventArgs e)
{
BuildControlBasedOnData();
}
public BuildControlBasedOnData()
{
// Build the user control based on saved data
}
致电Page:
Button_Click(object sender, EventArgs e)
{
UserControl1.BuildControlBasedOnData();
}
答案 1 :(得分:3)
用户控件(.ascx文件)在包含页面生命周期中呈现,正如您所提到的那样。当您在包含页面上执行按钮单击回发时,在回发加载时,将完全重新呈现用户控件。如果您要求用户控件在此加载时包含不同的信息,您可以执行许多操作:
还有很多其他选择。如果你在谈论部分回发或AJAXy类型的东西,那么你可能不得不使用JavaScript来更新用户控件的不同部分(除非你使用的是UpdatePanels,你不应该因为它们是恶魔而不是)
答案 2 :(得分:2)
我提出了我认为是一种不完美但可用的解决方案。我所做的就是在我的.ascx文件Page_Load
中创建Public
函数,然后在保存信息后调用它。这照顾了我的问题。
如果有人有更优雅的解决方案,请告诉我!