Как предоставить сообщения о успехе 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>