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

Pet*_*ete 15 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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

Jim*_*nts 24

您需要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);
}
Run Code Online (Sandbox Code Playgroud)

  • 在将函数返回类型更改为ActionResult之后,这有效! (2认同)