Как вы RedirectToAction () на GET, а не на POST - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть сценарий, в котором я хотел бы перенаправить пользователя, когда он обращается к странице (GET, а не POST), и я хотел бы знать, как это сделать в ASP.Net MVC.

Вот сценарий.У меня есть контроллер с мастером многоэтапного процесса.Возможно, даже если маловероятно, что пользователь пытается получить доступ к шагу 1, хотя он уже завершил этот шаг.В этом случае я бы хотел перенаправить его на шаг 2.

Что-то вроде:

public ViewResult Step1(int? id)
{
    //Do some stuff and some checking here...
    if (step1done)
    {
        return RedirectToAction("RegisterStep2");
    }
}

Однако это приводит к следующей ошибке, поскольку RedirectToAction предназначен для использования в ActionResult.Метод:

Невозможно неявно преобразовать тип 'System.Web.Mvc.RedirectToRouteResult' в 'System.Web.Mvc.ViewResult'

Может кто-нибудь сказать мне, как это исправить, и у меня есть метод ViewResult(GET action) выполнить перенаправление?Должен ли я просто использовать Response.Redirect () так же, как в простом старом ASP.Net, или есть способ «более ASP.Net MVC» сделать это?

Ответы [ 2 ]

8 голосов
/ 01 февраля 2012

Измените тип возврата на ActionResult, базовый класс для ViewResult и RedirectToRouteResult.

public ActionResult Step1(int? id)
{
    //Do some stuff and some checking here...
    if (step1done)
    {
        return RedirectToAction("RegisterStep2");
    }

    // ...

    return View();
}
6 голосов
/ 01 февраля 2012

Изменение ViewResult на ActionResult

public ActionResult Step1(int? id)
{
    //Do some stuff and some checking here...
    if (step1done)
    {
        return RedirectToAction("RegisterStep2");
    }
}

ViewResult происходит от abstract класса ActionResult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...