У меня есть div на моей главной странице, который отображается, только если Session ["message"] содержит данные:
<%
if (!String.IsNullOrEmpty(Session["message"].ToString()))
{
%>
<div id="sessionMessage" class="sessionMessage"><%:Session["message"].ToString()%></div>
<%
}
%>
Я использую его для передачи общей информации пользователям как об успешном, так и об неудачном действии.
Я проверил его на сбоях, и он прекрасно работает. Просто установите Session ["message"] в блоке catch и верните новый экземпляр представления:
{
//Invalid - redisplay with errors
Session.Add("message", "That object already exists. Please try again.");
return View(new DetailViewModel());
}
Проблема: Однако, для случаев успеха, которые включают RedirectToAction, сессия ["message"] всегда очищается к тому времени, когда я попадаю на главную страницу:
//Send message to view for user to see
Session.Add("message", "Object added.");
//Redirect to the details
return RedirectToAction("Details", new { id = viewModel.MyObject.ObjectId });
Я подумал о переходе на TempData, но он выдает ошибку нулевой ссылки при начальной загрузке страницы. Я предполагаю, что это потому, что TempData является членом класса Controller, а мастер-страница не имеет контроллера как такового?