我有两个控制器和两个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的对象详细信息?
答案 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);
}
}