Как я могу перейти с другого экрана на другой с помощью MVC? - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть экран для создания записей в MVC. Если модель подтвердит правильность, я хочу вернуться на главный экран. Я видел следующее:

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

Это кажется излишним, так как определяет контроллер, и я не хочу менять контроллеры. Есть ли более простой способ сделать это?

Ответы [ 2 ]

6 голосов
/ 23 ноября 2011

Вы можете использовать

return RedirectToAction("ActionName");

для перенаправления на другое действие в том же контроллере.

0 голосов
/ 23 ноября 2011

Маршрут по умолчанию выглядит следующим образом в 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"] });
}
...