2012-03-23 3 views
1

У меня есть метод, как этот:Возвращение действительного зрения от контроллера

[HttpPost] 
    public ActionResult Edit(ViewModel.MyViewModel viewModel) 
    { 
    // Code here to handle the save to the database and in the case 
     // where some validation are not accepted, return View(viewModel) 

    return View("Index", viewModel); 
    } 

Когда я запускаю этот код и мой ViewModel действительно, я хотел бы вернуть пользователя к просмотру со списком Предметы.

Я знаю, что я должен использовать RedirectToAction («Index») в этом случае вместо последней строки, но мне интересно узнать, почему, когда я запускаю этот код, и последняя строка выполняется, MVC возвращает страницу редактирования вместо на странице списка.

И по каким причинам я бы указал имя вида в списке параметров функции View, если я не могу указать иное, чем представление, обработанное контроллером?

спасибо.

+0

После некоторого времени поиска я обнаружил, что проблема в том, что я отправляю неверную модель просмотра на страницу индекса, потому что эта страница получает строго типизированный список viewmodel. В этом случае я искал с помощью дополнения HttpFox для Firefox для разницы между простым обратным представлением («Индекс») и RedirectToAction («Индекс»), а последний - окончательно лучшим выбором во всех точках. Во-первых, он отправляет http-код статуса 302, который лучше всего подходит к шаблону PRG, а во-вторых, мне не нужно дублировать логику моего действия по индексу, чтобы заполнить список viewmodel. – Samuel

ответ

2

Я знаю, что я должен использовать RedirectToAction («Index») в данном случае вместо последней строки, но мне интересно знать, почему, когда я запускаю этот код и последняя строка выполняется, MVC возвращает Изменить страницу вместо на странице списка.

Edit вид не выполнен. Это вид Index, которому вы передали экземпляр MyViewModel, даже если в адресной строке браузера вы видите /somecontroller/edit.

Смежные вопросы