Передача сообщений пользователю в MVC2 - PullRequest
2 голосов
/ 29 июня 2010

Я использую ASP.NET MVC2 для своего проекта.Я хочу отправить пользователю подтверждающие сообщения после действий.

В идеале: пользователь нажимает на ссылку со строкой запроса (т. Е. На ссылку для удаления записи). Контроллер делает то, что говорит ссылка, создает сообщение об успехе,и использует RedirectToAction, чтобы избавиться от строки запроса из URL.Новое действие отображает сообщение об успехе.

Было предложено использовать для этого ошибку модели, однако я не думаю, что это сработает в этой ситуации.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 29 июня 2010

Вы можете использовать TempData:

public ActionResult Index()
{
    string message = TempData["message"] as string ?? string.Empty;
    // send the message as model so that the view can print it out
    return View("index", message);
}

[HttpPost]
public ActionResult DoWork()
{
    // do some work
    TempData["message"] = "Work done!";
    return RedirectToAction("index");
}

Внутренне TempData использует сеанс для сохранения информации, но она автоматически удаляется после следующего запроса, поэтому она будетбыть доступным только по следующему запросу после хранилища.

2 голосов
/ 29 июня 2010

Я использую TempData с сообщением в моем файле Site.Master:

  <% if (TempData["Error"] != null)
     { %>

    <div id="errorMessage">
        <%= Html.Encode(TempData["Error"]) %>
    </div>
   <% } %>

   <% if (TempData["Warning"] != null)
      { %>

    <div id="warningMessage">
        <%= Html.Encode(TempData["Warning"]) %>
    </div>
   <% } %>

В моем контроллере я могу присвоить значение либо TempData["Error"], либо TempData["Warning"], и они будут стилизованы по-другому.

2 голосов
/ 29 июня 2010

Прежде всего НЕ ИСПОЛЬЗУЙТЕ ПОЛУЧИТЕ ЗАПРОСЫ НА ИЗМЕНЕНИЕ ДАННЫХ!Представьте, что поисковая система индексирует ваш сайт и посещает все ссылки для удаления.

Во-вторых, почему целевое действие не может вернуть представление, показывающее сообщение об успехе / неудаче?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...