2010-09-17 89 views
1

是否可以使用跨页面回发(或类似的方法,可能是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'类似,但在该示例中,每个页面都是特定于上一页的页面。

快乐改写这一点,如果我不是特别清楚......

回答

0

首先创建一个让您的信息和其打算从页面移动到页面,并填充数据的类。

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

现在来自Page1 - > Page2。

您从第1页的集page2.aspx设置,你可以得到的信息

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

,你通过让他们将其发送至

PostBackUrl="Page2.aspx" 

在...

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

另一种手动方式是让你的类可串行化,通过发布将它作为xml发送,并在下一个p年龄。

+0

嗯,我不知道如果这可以工作,如果一个抽象类持有两个字段,将由第2页填充,以便第2页不需要知道其他领域,它可以只填写和通过它在。虽然我不想让页面知道第1页,而是指定虚拟路径,但它可能只是将PreviousPage转换为具有该抽象类类型的公共属性的特定类型的页面? (并且任何实现此方法的页面都需要具有这种类型的页面) – Kasaku 2010-09-17 15:09:07

+0

@PirateKitten然后将它们作为xml或简单字符串结构从一个发送到另一个。 – Aristos 2010-09-17 15:30:08