2012-09-03 143 views
0

我正在使用ASP.net MVC 2.0開發網站。有一系列的頁面應該像一個簡單的嚮導而沒有返回。數據應該在頁面之間共享。我想只允許從當前的嚮導重定向到嚮導的下一頁。當前頁面的視圖模型應該被傳遞到下一個將用於實現某些邏輯的頁面。任何用戶都不能訪問直接在瀏覽器中輸入URL的中間頁面。限制訪問使用ASP.NET的頁面

我試着用TempData和一個指定的鍵來保存當前頁面的模型視圖,將它傳遞給下一個,並檢查它是否爲NULL或不顯示頁面。如果TempData中模型視圖的值爲NULL,則意味着用戶不是從前一個頁面重定向到此頁面。但是,用戶可以重定向到嚮導的下一頁並從站點的其他地方出去(例如常見問題頁面)。在此之後,用戶可以鍵入已經離開的嚮導頁面的直接鏈接,並且該頁面將被顯示,但是在邏輯上它應該被重定向到錯誤頁面。

問題:我怎樣才能允許重定向到一個嚮導的某個頁面,只是從前一個和哪個地方更多?

回答

0

我不完全明白。我想你想限制引薦網址?如果是這樣,那麼你可以做:

// Action code 

if(Request.UrlReferrer != "Valid url") 
{ 
    return View("Error"); 
} 
else 
{ 
    // render the next page of your wizard 
} 

所有你需要的是一些邏輯來確定一個有效的URL引用是什麼每個階段。

考慮使用會話來存儲您的數據。

0

我想我會在會話變量中存儲一個頁面值。在每個頁面的控制器上檢查會話變量以查看前面的步驟已被訪問。如果不是,則將RedirectToAction返回到上一步。

在每個步驟結束時,驗證成功後,設置會話變量以顯示它已完成,然後重定向到下一步。

你也可以在使用會話的頁面之間共享數據,雖然我知道一些開發人員對此感到畏懼......但我不太確定爲什麼......我喜歡會話。

0

您可以限制你的動作方法HttpPost:

[HttpPost] 
public ActionResult SecondPageAction(SomeType dataFromFirstPage) 
{ 
    .... 
}