在MVC2中将消息传递给用户

时间:2010-06-29 13:32:26

标签: asp.net asp.net-mvc asp.net-mvc-2

我正在为我的项目使用ASP.NET MVC2。我希望在操作后发送用户确认消息。

理想情况下: 用户点击带有查询字符串的链接(即删除条目的链接) 控制器执行链接所说的内容,创建成功消息,并使用RedirectToAction从URL中删除查询字符串。 新操作显示成功消息。

有人建议我使用模型错误来执行此操作,但我不认为这会在这种情况下起作用。

感谢。

3 个答案:

答案 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"]指定一个值,并将它们设置为不同的样式。