嘿傢伙, 從一個控制器到另一個控制器持久觀看模型數據的最佳機制是什麼?堅持從一個控制器到另一個控制器的數據
例如
返回RedirectToAction( 「SomeAction」, 「SomeController」);
我需要將前一個控制器的一些數據提供給我重定向到的新控制器。
嘿傢伙, 從一個控制器到另一個控制器持久觀看模型數據的最佳機制是什麼?堅持從一個控制器到另一個控制器的數據
例如
返回RedirectToAction( 「SomeAction」, 「SomeController」);
我需要將前一個控制器的一些數據提供給我重定向到的新控制器。
如果你沒有傳遞一個對象或一些複雜的東西,請使用參數。只要確保重定向的動作獲取參數來顯示它應該。
return RedirectToAction("SomeAction", "SomeController",new { id=someString});
獲取該動作的參數:
public ActionResult SomeAction(string id)
{
//do something with it
}
好的,所以我打算這麼做,但它看起來並不像一種非常優雅的做事方式。然而;如果這是人們如何做的話,那麼我也可以效仿。 – CrazyCoderz 2011-04-28 14:21:00
它很好地顯示,並且您可以在編譯時捕獲任何錯誤(缺少參數等)。 – 2011-04-28 14:22:44
它有什麼問題?這很簡單。你不想爲簡單的任務尋找花哨的東西。 – 2011-04-28 14:23:09
一個重定向就是要發送一個HTTP響應,以引導它,然後做一個新的HTTP請求/SomeController/SomeAction
客戶端。另一種方法是直接調用另一個控制器上的方法... new SomeController().SomeAction(someData)
。
@UfukHacıoğulları:您無法使用ViewData在2個控制器之間共享信息。 ViewData只在Controller和View之間共享信息。
如果您需要在重定向時共享多個控制器之間的複雜信息,請改爲使用「TempData」。
這裏是你如何使用「TempData的」 - http://msdn.microsoft.com/en-us/library/dd394711.aspx
我認爲這將是有益的給你,從一個動作到另一個動作傳遞價值。
public ActionResult ActionName(string ToUserId)
{
ViewBag.ToUserId = ToUserId;
return View();
}
public ActionResult ssss(string ToUserId)
{
return RedirectToAction("ActionName", "ControllerName", new { id = @ToUserId });
}
TempData看起來像一個糟糕的選擇並使用會話。所以這是一個不。 – CrazyCoderz 2011-04-28 14:11:14
你想要堅持的數據是什麼類型? – 2011-04-28 14:12:49
@Rory主要是字符串goo,沒什麼重要的 – CrazyCoderz 2011-04-28 14:13:45