Asp.net mvc 4 重定向到操作传递空值,而不是对象

Asp.net mvc 4 重定向到操作传递空值,而不是对象,asp.net-mvc-4,Asp.net Mvc 4,我的MVC4项目使用RedirectToAction将值传递给另一个控制器 问题是,它传递的是null而不是值 [HttpGet] public ActionResult MyProduct(product prod) { return RedirectToAction("Index", "MyController", new { prod = prod}); } 这准确地重定向到我的MyController,它是 public Acti

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

您的函数参数名称在重定向操作中不匹配

您应该这样更改它:

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

您输入的参数名称错误,您希望在操作中将其更改为prod,因为prod是RouteValueDictionary的一部分,它将由字典中定义为Key的相同参数收集

return RedirectToAction("Index", "MyController", new { prod = prod});
使现代化 如果我正确理解了您的问题,您就不能通过RedirectToAction通过路由参数传递模型对象,相反,您可以传递需要发送的特定属性,也可以使用TempData

无法使用重定向操作发送数据。这是因为您正在执行301重定向,并返回到客户端

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

考虑此图像以获得在模型-视图-控制器之间传递数据的方式

很抱歉,那是个打字错误。真的很抱歉。更新后您可以详细介绍tempdata。。。我不明白为什么我不能传递一个引用类型:或者它是如此简单,因为它只接受RedirectToAction参数中的值类型?@MyDaftQuestions请检查我更新的答案,我会添加更多内容。关于它是一个301,这一点非常清楚。非常感谢。这真是一个超级答案,解释得很好,很清楚,也很有用。真的很抱歉。已更新的后可能副本