RedirectToAction没有传递所有参数

时间:2011-04-22 11:41:16

标签: asp.net-mvc asp.net-mvc-2

我在同一个Controller中有这两个方法,第一个将两个参数传递给第二个。

调试时,传递的列表(model.RequestedProducts)是正确的(非空),但在第二种方法上,只有idor被正确读取,List<OCS> RequestedProducts为空。

    [HttpPost]
    public ActionResult Index(int idOR, ViewModel model, string add, string remove, string send)
    {
        //...
                return RedirectToAction("Done", 
                                         new { idOR = idOR, 
                                         RequestedProducts = model.RequestedProducts});       
    }

    public ActionResult Done(int IdOR, List<OCS> RequestedProducts)
    { ...

我错过了什么?

有没有更好的方法呢? (除了重定向行动)

谢谢

1 个答案:

答案 0 :(得分:1)

当您使用RedirectToAction时,您将向客户端返回一条消息,要求提供类似/controller/action/id的新URL。您Routes将定义URL的格式。我猜你定义了默认路由,在你的情况下,MVC无法知道如何将你的RequestedProducts类型反序列化为URL,然后将其绑定回List类型。

相反,您可以使用TempData对象在Action请求之间传递数据。

  

TempData属性值存储在会话状态中。在设置TempDataDictionary值之后调用的任何操作方法都可以从对象获取值,然后处理或显示它们。 TempData的值一直存在,直到读取或会话超时为止。

This MSDN article解释了这一切。