В приложении ASP. NET MVC у меня есть действие контроллера, которое вызывает бизнес-уровень для добавления объекта.
Если по бизнес-причинам объект не может быть добавлен, Для свойства error установлено значение true вместе с описанием.
Если установлено значение true, я задаю ключ TempData
для сообщения об ошибке, а затем перенаправляю на представление с кодом для отображения ошибки, сохраненной в TempData
, если это существует. Иногда отображается условный блок, а иногда нет.
Вот соответствующий код в моем контроллере
var added = ModelHelper.CreateSessionCode(model);
if(added.Error)
{
TempData["SessionCodesMessage"] = model.ErrorDescription;
TempData["MessageClass"] = "alert-danger";
}
else
{
TempData["SessionCodesMessage"] = "Created session code";
TempData["MessageClass"] = "alert-success";
}
return RedirectToAction("Index");
Тогда, на мой взгляд, у меня есть этот код:
@if (TempData["SessionCodesMessage"] != null)
{
<div class="alert @TempData["MessageClass"] alert-dismissable" style="margin-top: 8px;">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
@(TempData["SessionCodesMessage"])
</div>
}
И кажется несовместимым, когда сообщение отображается или нет. Может ли это быть проблемой кеша браузера или подобным? После пошагового выполнения кода я могу подтвердить, что выполнение переходит в оба условных блока контроллера в зависимости от результата добавления объекта.