Обработка ошибок в дочерних действиях MVC
Моя обработка ошибок собирает (некоторые вручную, некоторые автоматически) ошибки, возникающие во время выполнения контроллера. Тогда у меня есть частичное представление, которое выдает сообщения об ошибках. Я храню сообщения об ошибках в ViewData (и передаю их в TempData, если отвечаю в RedirectResult).
Проблема заключается в том, что если дочернее действие вызывает ошибку, оно не будет отображаться, так как они (по крайней мере, те, которые находятся ниже по странице) выполняются ПОСЛЕ отображения частичного представления.
Прямо сейчас единственная, несколько отчаянная идея, которую я имею, состоит в том, чтобы преобразовать сообщения в javascript внизу страницы макета и заставить этот javascript обновлять окна отображения ошибок. Но он плохо пахнет, для этого мне не нужен клиентский код.
Есть ли способ получить частичное представление "ленивый рендеринг" после всего остального?
1 ответ
Вы можете попробовать использовать Html.Action
и сохраните результат в переменной для каждого вашего дочернего действия.
И когда вы закончите, вы можете позвонить Html.RenderPartial
для вашей "панели ошибок".
@{
var result = Html.Action("ChildAction");
}
@Html.Partial("ErrorMessages")
@result
А затем вы продолжаете со своим обычным макетом, размещая переменные вместо вызова действия.