如何使用MVC从另一个屏幕移动到另一个屏幕?
问题描述:
我有一个屏幕在MVC中创建记录。如果模型验证,那么我想返回到我的主屏幕。我看到以下内容:如何使用MVC从另一个屏幕移动到另一个屏幕?
return new RedirectToRouteResult(
new RouteValueDictionary(
new { controller = "Access", action = "Home" }
)
);
这似乎相当矫枉过正,因为它指定了控制器,我不想更改控制器。有没有更简单的方法来做到这一点?
答
默认路由看起来像这样在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"] });
}
答
您可以使用
return RedirectToAction("ActionName");
重定向到在同一个控制器的另一个行动。