在我的具體示例中,我需要將一個控制器上收到的錯誤傳遞給另一個將顯示的控制器。這是我設置的一個測試案例。我試過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,但是當我設置其中任意三個值時,然後執行重定向操作,該值每次都會丟失。 – Jhorra 2010-08-04 20:46:16