2012-11-23 85 views
0

我有一些MVC視圖,只有在工作流的上下文中才有意義。例如。用戶在另一個頁面上提交信息,然後重定向到僅顯示「成功」的頁面。如何處理無效的asp MVC路由

由於重定向是GET,因此無法通過調整其URL來阻止用戶手動導航到頁面。

在這種情況下應該怎麼做?重定向到錯誤頁面,顯示空白頁面?

+0

請停止將「ASP.NET MVC」簡稱爲「MVC」。一個是框架,而另一個是獨立於語言的設計模式。這就像調用IE - 「互聯網」 –

+0

因此,標籤......將重新命名標題。 – Kye

+0

是的,我編輯了您的標籤,但無法重寫您的整個問題。 –

回答

1

在我看來,成功信息視圖不應該有路由,因爲它們不打算從瀏覽器URL中提供。在我們的項目,我們通常從後action.for例如直接返回成功視圖,

[HttpPost] 
    public ActionResult ChangePassword(ChangePasswordModel model) 
    { 
     if (ModelState.IsValid) 
     { 

      bool changePasswordSucceeded; 
      try 
      { 
       MembershipUser currentUser = Membership.GetUser(User.Identity.Name, userIsOnline: true); 
       changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword); 
      } 
      catch (Exception) 
      { 
       changePasswordSucceeded = false; 
      } 

      if (changePasswordSucceeded) 
      { 
       var infoModel = new AnyInfoModel(); 
       return View("ChangePasswordSuccess", infoModel); // This is not redirected, but success shown in the current route url. 
      } 
      else 
      { 
       ModelState.AddModelError("", "The current password is incorrect or the new password is invalid."); 
      } 
     } 
     return View(model); 
    } 

但是,這有一個缺點同樣,如果用戶不小心碰到他F5鍵的瀏覽器,它會嘗試重新發布形式。