Как перенаправить функцию ViewResult или ActionResult?

Скажем, у меня есть:

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

Вам нужно return RedirectToAction вместо вызова метода RedirectToAction. Кроме того, ваш метод должен вернуть ActionResult - это тип возврата, совместимый как с ViewResult, так и с RedirectToRouteResult.

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

    return View(myList);
}