重定向到操作传递null而不是object

时间:2014-12-19 19:48:29

标签: asp.net-mvc-4

我的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?

2 个答案:

答案 0 :(得分:4)

您错误输入了您在操作时期望的参数名称,将其更改为prod,因为prod是RouteValueDictionary的一部分,它将被字典中定义为askey的相同参数收集< / p>

return RedirectToAction("Index", "MyController", new { prod = prod});

更新

如果我正确理解了您的问题,您无法通过路径参数通过RedirectToAction传递模型对象,而是可以传递要发送的特定属性,或者您可以使用TempData

您无法使用RedirectAction发送数据。这是因为您正在进行301重定向并返回客户端。

重定向时,您主要将查询字符串作为将数据传递给其他请求的方法。另一种方法是使用TempData将数据存储在服务器上,您可以在下一个请求中检索它。 默认情况下,TempData使用Session。

考虑此图像以获取在Model-View-Controller之间传递数据的方法 enter image description here

答案 1 :(得分:0)

您的功能参数名称与RedirectToAction()

不匹配

你应该改变它:

return RedirectToAction("Index", "MyController", new { prod = prod});