2011-11-23 111 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"); 

重定向到在同一个控制器的另一个行动。

相关问题