2014-02-06 3 views
0

Одна из ситуаций, когда вы сталкиваетесь с ошибками проверки после отправки формы и хотите перенаправить обратно в форму, но хотите, чтобы URL-адрес отображал URL-адрес формы, а не страницу действие.Данные запроса на переадресацию RedirectToAction

Если я использую параметр viewData, мои параметры POST будут изменены на параметры GET.

Как этого избежать? Я хочу, чтобы этот параметр не был изменен на параметры GET.

ответ

1

Правильный шаблон проектирования не перенаправляется в случае ошибки валидации. Вы должны перенаправлять только в том случае, если операция завершается успешно.

Пример:

[HttpPost] 
public ActionResult Index(MyViewModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     // some validation error occurred => redisplay the same form so that the user 
     // can fix his errors 
     return View(model); 
    } 

    // at this stage we know that the model is valid => let's attempt to process it 
    string errorMessage; 
    if (!DoSomethingWithTheModel(out errorMessage)) 
    { 
     // some business transaction failed => redisplay the same view informing 
     // the user that something went wrong with the processing of his request 
     ModelState.AddModelError("", errorMessage); 
     return View(model); 
    } 

    // Success => redirect 
    return RedirectToAction("Success"); 
} 

Эта модель позволяет сохранить все значения модели в случае происходит какая-то ошибка, и вы должны повторно отобразить ту же точку зрения.

+0

Спасибо! Просто нашел эту тему похожей проблемой http://stackoverflow.com/questions/1936/how-to-redirecttoaction-in-asp-net-mvc-without-losing-request-data –

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