ASP.NET MVC Показать сообщение об успешном завершении
Вот пример, который у меня есть, который удаляет запись из моего приложения:
[Authorize(Roles = "news-admin")]
public ActionResult Delete(int id)
{
var ArticleToDelete = (from a in _db.ArticleSet where a.storyId == id select a).FirstOrDefault();
_db.DeleteObject(ArticleToDelete);
_db.SaveChanges();
return RedirectToAction("Index");
}
То, что я хотел бы сделать, это показать сообщение в представлении "Индекс", в котором говорится что-то вроде: "Статья Lorem ipsum была удалена", как бы я это сделал? Благодаря
Вот мой текущий метод Индекса, на всякий случай:
// INDEX
[HandleError]
public ActionResult Index(string query, int? page)
{
// build the query
var ArticleQuery = from a in _db.ArticleSet select a;
// check if their is a query
if (!string.IsNullOrEmpty(query))
{
ArticleQuery = ArticleQuery.Where(a => a.headline.Contains(query));
//msp 2011-01-13 You need to send the query string to the View using ViewData
ViewData["query"] = query;
}
// orders the articles by newest first
var OrderedArticles = ArticleQuery.OrderByDescending(a => a.posted);
// takes the ordered articles and paginates them using the PaginatedList class with 4 per page
var PaginatedArticles = new PaginatedList<Article>(OrderedArticles, page ?? 0, 4);
// return the paginated articles to the view
return View(PaginatedArticles);
}
Ответы
Ответ 1
Один из способов - использовать TempData:
[Authorize(Roles = "news-admin")]
public ActionResult Delete(int id)
{
var ArticleToDelete = (from a in _db.ArticleSet where a.storyId == id select a).FirstOrDefault();
_db.DeleteObject(ArticleToDelete);
_db.SaveChanges();
TempData["message"] = ""Lorem ipsum article has been deleted";
return RedirectToAction("Index");
}
и внутри действия Index
вы можете получить это сообщение из TempData и использовать его. Например, вы можете передать его как свойство вашей модели представления, которое будет передано в представление, чтобы оно могло показать его:
public ActionResult Index()
{
var message = TempData["message"];
// TODO: do something with the message like pass to the view
}
UPDATE:
Пример:
public class MyViewModel
{
public string Message { get; set; }
}
а затем:
public ActionResult Index()
{
var model = new MyViewModel
{
Message = TempData["message"] as string;
};
return View(model);
}
и внутри строго типизированного представления:
<div><%: Model.Message %></div>