我正在为我的项目使用ASP.NET MVC2。我希望在操作后发送用户确认消息。
理想情况下: 用户点击带有查询字符串的链接(即删除条目的链接) 控制器执行链接所说的内容,创建成功消息,并使用RedirectToAction从URL中删除查询字符串。 新操作显示成功消息。
有人建议我使用模型错误来执行此操作,但我不认为这会在这种情况下起作用。
感谢。
答案 0 :(得分: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
使用会话来保留信息,但会在下一次请求后自动清除,因此只有在存储后的下一个请求中才可用。
答案 1 :(得分:2)
首先不要使用获取修改数据的请求!想象一下搜索引擎索引您的网站并访问所有删除链接。
其次,为什么目标操作无法返回视图以显示成功/失败消息?
答案 2 :(得分:2)
我在我的Site.Master文件中使用TempData和消息:
<% 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"]
指定一个值,并将它们设置为不同的样式。