Как передать ModelErrors наряду с перенаправлением?

ASP.NET MVC 2.0

Я делаю Post-Redirect-Get, если я получаю ошибки на сообщении, я должен включать ModelErrors вперед для поездки к вдоль маршрута-Redirect-Get. Я отправляю его через 'TempData':

TempData["modelErors"] = 
    ModelState.
        Where(item => item.Value.Errors.Count > 0).
        ToDictionary(
            item => item.Key, 
            item => item.Value.Errors.Select(error=>error.ErrorMessage).ToList()
        );

И затем повторно вставьте его в ModelState:

if (TempData.ContainsKey("modelErors")) {
    foreach (var errors in (IDictionary<string,IList<string>>) TempData["modelErors"]) {
        foreach (var error in errors.Value) {
            ModelState.AddModelError(errors.Key, error);
        }
    }
}

Существует ли лучший путь?

1
задан THX-1138 25 June 2010 в 14:10
поделиться

1 ответ

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

В противном случае вам нужно использовать cookies, переменные сессии или переменные запроса, чтобы сохранить эту информацию для следующего запроса.

В ASP.NET MVC2 по умолчанию, я думаю, TempData использует состояние сессии для хранения информации для следующего запроса.

2
ответ дан 2 September 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: