【发布时间】:2010-08-05 04:53:49
【问题描述】:
在我的具体示例中,我需要将在一个控制器上接收到的错误传递给另一个控制器来显示它。这是我设置的一个测试用例。我试过 TempData、ViewData 和 Session。我注意到的另一件事是,这可能是我重定向的方式。当我在接收控制器上放置断点时,如果我只是去它,我会命中断点,但在重定向时它永远不会命中。
发送控制器动作
public ActionResult New()
{
Session["Notice"] = "There was an error";
Session["NoticeClass"] = "error";
return RedirectToAction("Index", "Home");
}
那么这里是接收控制器:
public ActionResult Index()
{
//Handle action
return View();
}
然后局部视图呈现发现的任何错误或通知
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%
string Message = "";
string Class = "hidden";
if (ViewData["Notice"] != null && ViewData["Notice"] != "")
{
Message = (string)ViewData["Notice"];
Class = (string)ViewData["NoticeClass"];
}
if (Session["Notice"] != null && Session["Notice"] != "")
{
Message = (string)Session["Notice"];
Class = (string)Session["NoticeClass"];
Session["Notice"] = null;
}
Response.Write("<div class=\"" + Class + "\" id=\"error_div\"><span id=\"error_span\">" + Message + "</span></div>");
%>
【问题讨论】:
-
我发现我可以在接收控制器上设置 TempData、Session 或 ViewData 就好了,但是当我设置其中任何三个的值时,然后执行重定向操作,值就会出现每次都会迷路。
标签: asp.net-mvc-2