将对象信息从一个控制器的ActionResult发送到另一个Controller的ActionResult?

时间:2013-12-22 08:33:24

标签: asp.net-mvc-4

我有两个控制器和两个ActionResults。我正在尝试将第一个控制器的ActionResult中的对象信息发送到第二个控制器的ActionResult。所以我发送了下面指定的对象,

1st Controller的ActionResult:

public class A : Controller
{
[HttpPost]
    public ActionResult Create()
    {
      MyClass MyObject = new MyClass() { ID=123,Name=”MyName”, CreatedDate=DateTime.Now};

      return RedirectToAction("Index", "B", MyObject);
    }

}

第二个控制者的ActionResult

public class B : Controller
{
[HttpGet]
    public ActionResult Index(MyClass MyObject)//Getting Null here?
    {   
       // Some Code goes here using MyObject
       return View(MyObject) 
    }
 }

第二个控制者(B)ActionResult(索引)每次获得空值?如何在控制器B中获取控制器A的对象详细信息?

1 个答案:

答案 0 :(得分:2)

由于重定向的性质,您的代码无法正常工作 - RedirectToAction使用GET操作。 使用HTTP GET,您可以在URL中发送一些参数,但不能在对象中发送(如POST中所示)。

如果要通过控制器和方法发送对象,可以使用TempData。 试试这个:

public class A : Controller
{
    [HttpPost]
    public ActionResult Create()
    {
      MyClass MyObject = new MyClass() { ID=123,Name=”MyName”, CreatedDate=DateTime.Now};

      TempData["myobj"] = MyObject;
      return RedirectToAction("Index", "B");
    }
}


public class B : Controller
{
    [HttpGet]
    public ActionResult Index()
    {   
       MyObject model = TempData["myobj"] as MyObject;
       return View(MyObject);
    }
 }