你如何在GET上RedirectToAction(),而不是在POST上

时间:2012-02-01 17:27:24

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

我有一个场景,我想在访问页面时重定向用户(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操作)执行重定向吗?我应该像普通的旧ASP.Net一样简单地使用Response.Redirect(),还是有“更多的ASP.Net MVC”方式来做到这一点?

2 个答案:

答案 0 :(得分:8)

将您的返回类型更改为ActionResultViewResultRedirectToRouteResult的基类。

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

    // ...

    return View();
}

答案 1 :(得分:6)

ViewResult更改为ActionResult

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

ViewResult来自abstractActionResult