我的MVC4项目使用RedirectToAction()
将值传递给另一个控制器。
问题是,它传递的是null而不是值
[HttpGet]
public ActionResult MyProduct(product prod)
{
return RedirectToAction("Index", "MyController", new { prod = prod});
}
这准确地重定向到我的MyController
public ActionResult Index(Product prod)
{
// prod is null :(
}
我在MyProduct控制器中放了一块手表,prod对象有一个值。属性没有值:(它为null
为什么在控制器之间传递对象时它变为null?
答案 0 :(得分:4)
您错误输入了您在操作时期望的参数名称,将其更改为prod
,因为prod是RouteValueDictionary
的一部分,它将被字典中定义为askey的相同参数收集< / p>
return RedirectToAction("Index", "MyController", new { prod = prod});
如果我正确理解了您的问题,您无法通过路径参数通过RedirectToAction
传递模型对象,而是可以传递要发送的特定属性,或者您可以使用TempData
您无法使用RedirectAction发送数据。这是因为您正在进行301重定向并返回客户端。
重定向时,您主要将查询字符串作为将数据传递给其他请求的方法。另一种方法是使用TempData
将数据存储在服务器上,您可以在下一个请求中检索它。 默认情况下,TempData使用Session。
考虑此图像以获取在Model-View-Controller之间传递数据的方法
答案 1 :(得分:0)
您的功能参数名称与RedirectToAction()
。
你应该改变它:
return RedirectToAction("Index", "MyController", new { prod = prod});