跨页回发并再次从源页面保留数据

时间:2010-09-17 14:54:39

标签: asp.net cross-page-posting

是否可以使用跨页回发(或类似方法,可能是Server.Transfer)将表单数据(例如,数据集A)发布到页面,然后允许用户添加一些其他信息(比如说,数据集B)然后回发到原始页面的完整数据集(A + B),然后流经正常事件执行过程,类似于在原始页面上提交所有数据A + B本身是在一个正常的回发?

我不希望第二页具有原始页面的任何类型知识,它只需要提供两个额外的源并发送数据。这样,不同的页面和控件可以使用此方法获取其他数据。

例如:

页面1可以有一个包含各种文本输入的表单,以及两个隐藏的字段Hidden1 + Hidden2,它们都是空的。

当提交第1页上的表单时,向用户显示第2页,他们完成该页面,然后将第1页的所有表单数据发回第1页,但隐藏字段1 + 2完成。然后,第1页将获得完成所需的所有信息。

我想也许第2页只需要使用PreviousPage并获取其发布数据,添加到它然后将其发布回第1页,但好像它来自第1页而不是第2页。但是我'我不确定这是否可行,ASP.NET可能会将其视为篡改数据?

这类似于this 'question',但在该示例中,每个页面都是前一页的特定页面。

如果我不是特别清楚的话,很高兴重写这个......

1 个答案:

答案 0 :(得分:0)

首先创建一个类,保持您的信息及其从一个页面移动到另一个页面并填充数据。

在每个页面中,您都有一个对此类的引用,一个变量,以太创建一个新的ether从上一页获取它。您将它存储在ViewState

现在来自Page1 - >第2页。

您可以将Page1设置为

从Page1发送
PostBackUrl="Page2.aspx"

在page2.aspx上,您可以设置获取信息的位置

<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>

你得到他们......

if (Page.PreviousPage != null)
{
    if(Page.PreviousPage.IsCrossPagePostBack == true)
    {
        GetTheClass = PreviousPage.MyDataClass;
    }
}

另一种手动方式是使您的课程可连续,通过邮寄将其作为xml发送,并在下一页解码。