由于.ascx文件在页面生命周期的早期自然呈现,如果我想更新.ascx部分外部的表单上的信息,如何刷新.ascx文件以反映这些变化,说按钮点击(保存信息的同一个)?刷新.ascx文件中的内容
例如(伪):
由于.ascx文件在页面生命周期的早期自然呈现,如果我想更新.ascx部分外部的表单上的信息,如何刷新.ascx文件以反映这些变化,说按钮点击(保存信息的同一个)?刷新.ascx文件中的内容
例如(伪):
如果您正在根据保存的数据创建正在构建的用户控件。你可以做的是创建一个具有该建筑物的方法,然后将网页和用户控件中调用它(伪):
用户控件:
protected Page_Load(object sender, EventArgs e)
{
BuildControlBasedOnData();
}
public BuildControlBasedOnData()
{
// Build the user control based on saved data
}
调用页面:
Button_Click(object sender, EventArgs e)
{
UserControl1.BuildControlBasedOnData();
}
用户控件(.ascx文件)包含页面生命周期中呈现,就像你提到。当你做一个按钮点击包含页面上的回发时,在回发加载时,用户控件将被完全重新渲染。如果您需要的用户控件包含在此负载不同的信息有很多事情可以做:
还有很多其他选项。如果您正在讨论部分回发或AJAXy类型的东西,那么您可能必须使用JavaScript来更新用户控件的不同部分(除非您使用UpdatePanel,而不应该因为它们是恶魔) 。
我提出了我认为是不完善但可用的解决方案。我所做的只是在我的.ascx文件Public
中创建Page_Load
函数,然后在保存信息后调用它。这照顾了我的问题。
如果有人有更优雅的解决方案,请让我知道!
这不会告诉我如何在信息被保存在page_load函数之外后重新呈现用户控件... – Jason 2009-08-24 19:45:28