2010-06-29 4 views
2

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

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

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

Спасибо.

+1

, пожалуйста, у меня нет ссылки для удаления вещей. что, если поисковая система сканирует его? используйте кнопку, которая отправляет форму для удаления – BritishDeveloper

ответ

7

Вы можете использовать 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

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

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

+0

Действительно ли это так плохо? Вы должны войти в систему, чтобы посетить эту область, и пользователь должен быть владельцем того, что удаляется. Я использовал это некоторое время, и у меня не было проблем, но теперь вы заставляете меня задаваться вопросом об этом. Мне еще многое предстоит узнать. – smdrager

+0

Да, это плохо, это даже катастрофично. Существуют плагины, которые люди обычно устанавливают в своих браузерах. Эти плагины притворяются «улучшенным опытом серфинга», индексируя контент, который пользователь просматривает. Поэтому не нужно быть поисковой системой. Это может быть сам пользователь, не зная его. –

+0

Ничего себе. Я использовал это некоторое время. Ха-ха .. хе-хе ... ах дерьмо. Таким образом, вместо того, чтобы принятый метод был бы: <форма действия метода = «...» = „пост“> <входного типа = „скрытое“ имя = „Идентификатор“ /> с кнопкой отправки или ссылкой используя js для отправки формы? – smdrager

2

Я использую 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"] и их стиль по-разному.

Смежные вопросы