MVC3 - перенаправление из события контроллера [NonAction] - PullRequest
1 голос
/ 12 марта 2012

Допустим, я нахожусь внутри события контроллера [NonAction] и хотел бы перенаправить его на домашнюю страницу?Какой самый простой способ сделать это?

[NonAction]
private ShoppingCartModel PrepareShoppingCartModel(ShoppingCartModel model, 
    IList<ShoppingCartItem> cart)
{
    if (cart == null)
        throw new ArgumentNullException("cart");

    if (model == null)
        throw new ArgumentNullException("model");

    if (cart.Count == 0)
        return model;

    ...bla bla bla (lots of code)     
 }

Теперь на 3-й строке, если Cart.Count if = 0, вместо того, чтобы возвращать пустую модель, при которой представление View будет пустым, я бы скорее перенаправилна главную страницу.

Я не могу использовать return RedirectToAction (), потому что компилятор выдает мне следующую ошибку:

Невозможно неявно преобразовать тип 'System.Web.Mvc.RedirectToRouteResult' в'Web.Models.ShoppingCart.ShoppingCartModel'

ВОПРОС:
Итак, как правильно выйти из процедуры контроллера [NonAction]?

1 Ответ

0 голосов
/ 12 марта 2012

Тип возврата должен быть ActionResult и . Вы должны возвращать View (модель) вместо только модели . Ваш код должен быть таким, как показано ниже.

[NonAction]
private ActionResult PrepareShoppingCartModel(ShoppingCartModel model, 
    IList<ShoppingCartItem> cart)
{
    if (cart == null)
        throw new ArgumentNullException("cart");

    if (model == null)
        throw new ArgumentNullException("model");

    if (cart.Count == 0)
        return View(model);

    ...bla bla bla (lots of code)     
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...