Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
456 views
in Technique[技术] by (71.8m points)

asp.net - Cross-page postbacks and back again retaining data from source page

Is it possible to use cross-page postbacks (or a similar method, perhaps Server.Transfer) to post form data (say, Data-set A) to a page, which then allows the user to add some additional information (say, Data-set B) and then postback to the original page the complete set of data (A+B) which then flows through the normal event execution process, similar to as if all data A+B was submitted on the original page to itself in a normal postback?

I don't want the second page to have any type knowledge of the original page, it just needs to supply two additional feeds and send the data on. This way different pages and controls could use this method for gaining additional data.

For example:

Page 1 could have a form with various text inputs, and two hidden fields Hidden1 + Hidden2 which are empty.

When the form on page 1 is submitted the user is presented with page 2, they complete that page and then all the form data from page 1 is posted back to page 1 but with the hidden fields 1 + 2 complete. Page 1 then has all the information it needs to complete.

I'm thinking that perhaps page 2 just needs to use PreviousPage and take its post data, add to it and then post it back to page 1, but as if it came from Page 1 and not Page 2. But I'm not sure if this is possible and ASP.NET might read this as tampered data?

This is similar to this 'question', but in that example each page is specfic to the previous page.

Happy to reword this if I'm not particularly clear...

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You first create a class that keep your information and its going to move from page to page and fill with data.

In every page you have a reference to this class, a variable, that ether create a new ether get it from the previous page. You store it on ViewState

Now from Page1 -> Page2.

You send it from Page1 by set to the

PostBackUrl="Page2.aspx"

On page2.aspx you set where you can get informations

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

and you get them by...

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

And one other manual way is to make your class seriable, send it as xml via post, and decode it on the next page.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...