我正在处理一组类似向导的页面,并且我依靠跨页面回发在它们之间导航。
我需要能够在上一页上触发 Load 事件,以便保存页面的表单数据。
有人告诉我,对于这种情况,我所要做的就是访问目标页面中的 PreviousPage 属性,这将触发前一页的加载事件,但由于某种原因,这似乎不起作用。
如果 PreviousPage 属性不为空,我还能做些什么来显式触发上一页上的加载事件?
谢谢你的帮助,
勇
我正在处理一组类似向导的页面,并且我依靠跨页面回发在它们之间导航。
我需要能够在上一页上触发 Load 事件,以便保存页面的表单数据。
有人告诉我,对于这种情况,我所要做的就是访问目标页面中的 PreviousPage 属性,这将触发前一页的加载事件,但由于某种原因,这似乎不起作用。
如果 PreviousPage 属性不为空,我还能做些什么来显式触发上一页上的加载事件?
谢谢你的帮助,
勇
您是否考虑过将加载上一页时所做的任何持久性逻辑移动到页面上的方法中?
这样你就可以点击:
if(PreviousPage != null)
PreviousPage.DoThatSavingThing();
显然,除非您将这些方法添加到所有页面,否则您需要键入它来获取您添加的特定方法。
这听起来让我有点困惑,但是如果您想要访问数据,最好将这些数据保存到您可以轻松访问的地方,例如 ASP.NET 会话缓存。因此,您无需返回先前导航的页面以获取数据,而是在第一次到达第一页时缓存数据,然后当用户导航到第二页时,它将有权访问该信息。
添加-我使用两种获取“强类型”上一页的方法进行了测试。
添加了对目的地的引用:
在目标上添加了 PreviousPage 指令:
访问目标中的 PreviousPage 属性时,在 PreviousPageName 页面(源)上触发了 Load 事件。
示例(假设在 PreviousPageName(源页面)上有一个名为 Test 的公共属性):
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
//Using a reference, you have to cast:
PreviousPageName x = (PreviousPageName)PreviousPage;
string test = x.Test;
//Using the PreviousPage directive, you do not need to cast:
string test2 = PreviousPage.Test
}
}