2011-04-28 127 views
0

嘿傢伙, 從一個控制器到另一個控制器持久觀看模型數據的最佳機制是什麼?堅持從一個控制器到另一個控制器的數據

例如

返回RedirectToAction( 「SomeAction」, 「SomeController」);

我需要將前一個控制器的一些數據提供給我重定向到的新控制器。

+0

TempData看起來像一個糟糕的選擇並使用會話。所以這是一個不。 – CrazyCoderz 2011-04-28 14:11:14

+0

你想要堅持的數據是什麼類型? – 2011-04-28 14:12:49

+0

@Rory主要是字符串goo,沒什麼重要的 – CrazyCoderz 2011-04-28 14:13:45

回答

1

如果你沒有傳遞一個對象或一些複雜的東西,請使用參數。只要確保重定向的動作獲取參數來顯示它應該。

return RedirectToAction("SomeAction", "SomeController",new { id=someString}); 

獲取該動作的參數:

public ActionResult SomeAction(string id) 
{ 
    //do something with it 
} 
+0

好的,所以我打算這麼做,但它看起來並不像一種非常優雅的做事方式。然而;如果這是人們如何做的話,那麼我也可以效仿。 – CrazyCoderz 2011-04-28 14:21:00

+1

它很好地顯示,並且您可以在編譯時捕獲任何錯誤(缺少參數等)。 – 2011-04-28 14:22:44

+0

它有什麼問題?這很簡單。你不想爲簡單的任務尋找花哨的東西。 – 2011-04-28 14:23:09

0

一個重定向就是要發送一個HTTP響應,以引導它,然後做一個新的HTTP請求/SomeController/SomeAction客戶端。另一種方法是直接調用另一個控制器上的方法... new SomeController().SomeAction(someData)

1

@UfukHacıoğulları:您無法使用ViewData在2個控制器之間共享信息。 ViewData只在Controller和View之間共享信息。

如果您需要在重定向時共享多個控制器之間的複雜信息,請改爲使用「TempData」。

這裏是你如何使用「TempData的」 - http://msdn.microsoft.com/en-us/library/dd394711.aspx

0

我認爲這將是有益的給你,從一個動作到另一個動作傳遞價值。

public ActionResult ActionName(string ToUserId) 
     { 
      ViewBag.ToUserId = ToUserId; 
      return View(); 

     } 


public ActionResult ssss(string ToUserId) 
     { 
      return RedirectToAction("ActionName", "ControllerName", new { id = @ToUserId }); 
     } 
相關問題