我在同一个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)
{ ...
我错过了什么?
有没有更好的方法呢? (除了重定向行动)
谢谢
答案 0 :(得分:1)
当您使用RedirectToAction
时,您将向客户端返回一条消息,要求提供类似/controller/action/id
的新URL。您Routes
将定义URL的格式。我猜你定义了默认路由,在你的情况下,MVC无法知道如何将你的RequestedProducts类型反序列化为URL,然后将其绑定回List类型。
相反,您可以使用TempData对象在Action请求之间传递数据。
TempData属性值存储在会话状态中。在设置TempDataDictionary值之后调用的任何操作方法都可以从对象获取值,然后处理或显示它们。 TempData的值一直存在,直到读取或会话超时为止。
This MSDN article解释了这一切。