如何使用MVC从另一个屏幕移动到另一个屏幕?

时间:2011-11-23 08:35:56

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我有一个在MVC中创建记录的屏幕。如果模型验证,那么我想返回到我的主屏幕。我见过以下内容:

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

这似乎相当矫枉过正,因为它指定了控制器,我不想更改控制器。有更简单的方法吗?

2 个答案:

答案 0 :(得分:6)

您可以使用

return RedirectToAction("ActionName");

重定向到同一个控制器中的另一个动作。

答案 1 :(得分:0)

默认路由在global.asax中显示如下:

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

这意味着如果没有指定"Home"控制器,将使用http://yoursite/控制器(如"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"] }); } 代替:

{{1}}