我有一个场景,我想在访问页面时重定向用户(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”方式来做到这一点?
答案 0 :(得分:8)
将您的返回类型更改为ActionResult
,ViewResult
和RedirectToRouteResult
的基类。
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
来自abstract
班ActionResult
。