2011-04-28 130 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 }); 
     } 
相关问题