[英]ASP.NET Postback and URLs
我有一個頁面,要求用戶執行多個步驟,但是該步驟在同一ASPX頁面上執行,並且顯示不同的面板。
但是,這要求每個步驟必須具有不同的URL,這可能很簡單,例如查詢字符串參數,例如:
步驟1:/member/signup.aspx?step = 1
步驟2:/member/signup.aspx?step = 2
步驟3:/member/signup.aspx?step = 3
但是,我不想每次用戶繼續進行下一步時都不必將用戶重定向到新的URL,這將涉及大量的重定向以及頁面加載上的switch語句來確定用戶所處的步驟。
如果我可以更改將原始請求發送回用戶時向用戶顯示的URL,那就更好了,即用戶在步驟1中單擊“下一步”,然后頁面進行一些處理,然后更改響應,以便然后,用戶看到第2步URL,但沒有任何重定向。
任何想法將不勝感激。
您可以將面板轉換為向導控件中的步驟嗎?
這可能比您想要的要復雜一些,但是您可以通過提交按鈕的PostBackUrl屬性來實現此效果。 我假設每個面板都有其自己的“提交”按鈕,並且他們都可以使用此屬性來“推進”該過程。 缺點是,為了獲得已提交的控件,您需要使用Page.PreviousPage屬性才能訪問任何控件及其值。
您可以根據查詢字符串值以編程方式更改每個Page_Load
上“ Next”按鈕的PostbackUrl
屬性。 但是,這有點奇怪,因為您將無法使用標准的事件處理程序來進行按鈕單擊,並且必須使用Page的PreviousPage
屬性來從上一個選項卡獲取數據。
我想挑戰這個要求。 為什么有人需要跳到中間一步? 如果是向用戶顯示進度的情況,請在頁面上而不是在URL中進行。
您要求每個步驟具有不同的URL,唯一的選擇不是Response.Redirect。 為了避免重定向,您可以使用IFrame,但用戶在瀏覽器上看不到IFrame URL。 我認為重定向選項很丑陋(對於SERVER和CLIENT而言),因為在這種情況下,您首先在該頁面上發帖,然后才獲得該頁面。 最好的解決方案是使用一些可變的跟蹤步驟回發。
簽出server.transfer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.