簡體   English   中英

ASP.NET回發和URL

[英]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而言),因為在這種情況下,您首先在該頁面上發帖,然后才獲得該頁面。 最好的解決方案是使用一些可變的跟蹤步驟回發。

您可以實施表單或網址重寫,以使您的網址最終被

/構件/注冊/步驟1 /

/構件/注冊/步驟2 /

/構件/注冊/步驟3 /

為此,請使用

HttpContext.RewritePath方法,例如,您可以將/ member / signup / step1 /重寫為/member/signup.aspx?step=1。 在這里查看示例。

我還將使用PRG (發布請求獲取)模式,以便每個下一個鏈接將該步驟的表單數據發布到會話,然后將用戶重定向到正確的下一個URL。 這樣可以確保用戶可以安全地在各個步驟之間來回導航,並且該網址在您所有的帖子中都將保持不變。

簽出server.transfer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM