2011-11-23 173 views
2

我有一個屏幕在MVC中創建記錄。如果模型驗證,那麼我想返回到我的主屏幕。我看到以下內容:如何使用MVC從另一個屏幕移動到另一個屏幕?

   return new RedirectToRouteResult(
        new RouteValueDictionary(
         new { controller = "Access", action = "Home" } 
        ) 
       ); 

這似乎相當矯枉過正,因爲它指定了控制器,我不想更改控制器。有沒有更簡單的方法來做到這一點?

回答

0

默認路由看起來像這樣在global.asax中:

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new {controller = "Home", action = "Index", id = UrlParameter.Optional}, 
); 

這意味着,如果沒有已經被指定(如在http://yoursite/)的"Home"控制器將被使用。默認操作是"Index"(如http://yoursite/somename/)。

重定向到網站首頁

有了這些知識,我們可以使用RedirectToRoute親臨現場,並在控制器的主頁。讓我們先從控制器:

return RedirectToRoute("Default"); 

重定向到默認控制器的動作

如果我們想爲控制器的默認操作,我們可以直接使用該動作的名稱,如:

return RedirectToAction("Index"); 

或指定RedirectToRoute控制器:

return RedirectToRoute("Default", new { controller = "somename" }); 

但是,這將產生在每個控制器重複的代碼,所以我們將代碼移到我們BaseController代替:

public ActionResult RedirectToHome() 
{ 
    return RedirectToRoute("Default", new { controller = RouteData.Values["controller"] }); 
} 
6

您可以使用

return RedirectToAction("ActionName"); 

重定向到在同一個控制器的另一個行動。

相關問題