如何在ViewResult或ActionResult函数中重定向?

时间:2010-03-29 14:08:28

标签: asp.net-mvc

说我有:

public ViewResult List() 
{
    IEnumerable<IModel> myList = repository.GetMyList();
    if(1 == myList.Count())
    {
        RedirectToAction("Edit", new { id = myList.Single().id });
    }

    return View(myList);
}

在这个函数中,我检查列表中是否只有一个项目,如果有我想直接重定向到处理列表项的控制器,否则我想显示列表视图。

我该怎么做?简单地添加RedirectToAction不起作用 - 调用被命中,但VS只是跨过它并尝试返回底部的视图。

1 个答案:

答案 0 :(得分:23)

您需要return RedirectToAction而不是仅调用RedirectToAction方法。此外,您的方法需要返回ActionResult,这是一种与ViewResultRedirectToRouteResult兼容的返回类型。

public ActionResult List() 
{
    IEnumerable<IModel> myList = repository.GetMyList();
    if(1 == myList.Count())
    {
        return RedirectToAction("Edit", new { id = myList.Single().id });
    }

    return View(myList);
}