Как предоставить сообщения об успешности в asp.net mvc?
Как предоставить сообщения о успехе asp.net mvc?
Ответ 1
Если вы показываете сообщение на другой странице, чем ViewData
не поможет вам, так как он повторно инициализируется с каждым запросом. С другой стороны, TempData
может хранить данные для двух запросов. Вот пример:
public ActionResult SomeAction(SomeModel someModel)
{
if (ModelState.IsValid)
{
//do something
TempData["Success"] = "Success message text.";
return RedirectToAction("Index");
}
else
{
ViewData["Error"] = "Error message text.";
return View(someModel);
}
}
Внутри блока if
вы должны использовать TempData
, потому что вы выполняете перенаправление (другой запрос), но внутри вы можете использовать ViewData
.
И внутри просмотра вы можете иметь что-то вроде этого:
@if (ViewData["Error"] != null)
{
<div class="red">
<p><strong>Error:</strong> @ViewData["Error"].ToString()</p>
</div>
}
@if (TempData["Success"] != null)
{
<div class="green">
<p><strong>Success:</strong> @TempData["Success"].ToString()</p>
</div>
}
Ответ 2
в вашем контроллере вы можете сделать это:
ViewData["Message"] = "Success"
и, на ваш взгляд, вы можете проверить, есть ли сообщение для отображения, и если да, то отобразите его:
@if (ViewData["Message"] != null)
<div>success</div>
Ответ 3
Используйте ViewData для хранения сообщений об успешности. Создайте сообщение об успешности в контроллере и проверьте его в представлении. Если он существует, отрисуйте его.
Ответ 4
TempData может использоваться как словарь. Каждое сохраненное значение сохраняется для текущего и следующего запросов. Идеально подходит для перенаправления.
this.TempData["messages"] = "Success!";
return RedirectToAction("YourAction");
Ответ 5
У меня есть тенденция хранить мои ошибки и успехи в одном и том же массиве/объекте и передавать их в представление.
Так как большая часть моего сообщения об ошибке/успехе появится в том же месте, и они обычно не встречаются одновременно, это обычно не проблема.
У меня есть функция под названием ShowFeedback()
, которая вызывается как usercontrol, и логика определяет, что показывать. Ошибки и успехи отмечены одинаково в HTML, и только css немного отличается. Таким образом, вы могли бы
<div id="feedback" class="error">
Your error message
</div>
или
<div id="feedback" class="success">
Your success message
</div>