Как перенаправить в функции ViewResult или ActionResult? - PullRequest
15 голосов
/ 29 марта 2010

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

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 Ответ

24 голосов
/ 29 марта 2010

Вам нужно 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...