2010-06-29 52 views
2

我正在为我的项目使用ASP.NET MVC2。我想在操作后发送用户确认消息。将消息传递给MVC2中的用户

理想:用查询字符串中的链接 用户点击(即链接删除条目) 控制器做链接怎么说,创建成功的消息,并使用RedirectToAction摆脱摆脱查询字符串网址。 新操作显示成功消息。

有人建议我使用模型错误来做到这一点,但我不认为这会在这种情况下工作。

谢谢。

+1

请不要有链接删除东西。如果搜索引擎抓取它会怎么样?使用张贴表单删除的按钮 – BritishDeveloper 2010-06-29 14:05:33

回答

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 2010-06-29 13:45:03

+0

是的,它是坏的,甚至是灾难性的。人们倾向于在其浏览器上安装插件。这些插件通过索引用户正在浏览的内容来假装“改善冲浪体验”。所以没有必要成为一个搜索引擎。没有他知道的可能是用户自己。 – 2010-06-29 13:46:44

+0

哇。我一直在使用这一点。哈哈......呃......废话。因此,而不是接受的方法将是一个: <形式行动= “...” 方法= “POST”> 具有提交按钮或链接用js提交表单? – smdrager 2010-06-29 13:51:32

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"],并让他们的风格是不同的。