2011-03-17 27 views
2

通常我會設置一個GET POST重定向週期,但是我遇到了一種情況,而不是重定向,我只需要返回一個新的視圖。這樣做的問題是新頁面有上一頁的URL(因爲我沒有重定向,我剛剛返回了一個新視圖)。有沒有辦法改變呈現給用戶的網頁的網址而不重定向?.net MVC獲取回覆視圖

我實際執行嚮導,我需要堅持的頁面之間的數據,但是我也沒有辦法通過一個重定向到持久化數據(TempData的被禁用..)而導致上述方法。一個可能的解決方案是創建一個表來存儲我需要保留的臨時數據,但這是不可取的。我也不想結束嚮導的每個領域的一個視圖,只是使用jscript來隱藏顯示不同的步驟。

任何幫助,提示或一般建議將非常感激。

謝謝。

回答

0

不,您必須重定向纔能有效更改網址。

0

您可以隨時POST一個新的URL,對吧?

在你的嚮導,你可以做

  1. myWizard /第一步
  2. myWizars/step2的

有沒有異議,但他們會如果他們重新發布打F5。

在帖子之間,你可以模型綁定,然後打印出HTML隱藏。

ViewState的2.0

+0

感謝您的回覆。我可以通過發佈並將其作爲模型返回來保留數據,這不是問題。但是,如果我發佈到下一步,那麼我無法做一些驗證並返回到沒有重定向的同一頁面。 – user663470 2011-03-17 04:42:27

0

你可以讓你查看一個強類型的視圖,以便您可以將您的數據到該視圖,當你回吧。只需從您想要保留的數據中創建視圖模型即可。

return View("MyViewPage", objData); 
0

也許你可以做這樣的事情?

  1. 用你的形式包裝在一個局部的視圖。
  2. 將它發佈到第二個網址。
  3. 執行驗證並返回相同的部分,如果失敗。
  4. 否則,返回你的第二個視圖。

你必須讓你的形式,以從正對POST整個呈現標記停止PartialViewResult,雖然(和後父動作)一個孩子的動作,所以這確實有一定的侷限性,您可以呈現的條款(例如,如果您希望佈局更改爲第二頁,則可能需要解決一些問題)。

這種方式可以讓您的ModelState完好的驗證錯誤,直接從POST返回你的第二個觀點,仍然有不同的URL。