我有一个在MVC中创建记录的屏幕。如果模型验证,那么我想返回到我的主屏幕。我见过以下内容:
return new RedirectToRouteResult(
new RouteValueDictionary(
new { controller = "Access", action = "Home" }
)
);
这似乎相当矫枉过正,因为它指定了控制器,我不想更改控制器。有更简单的方法吗?
答案 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}}