RedirectToAction List< T>参数不会被正确转发给actionmethod
本文关键字:转发 actionmethod List 参数 RedirectToAction | 更新日期: 2023-09-27 18:05:01
我有一个动作方法(FileUpload),它处理上传的数据并将其转发给一个新的动作方法。处理后的数据应作为参数发送给其他动作方法。
public RedirectToRouteResult FileUpload(HttpPostedFileBase file)
{
//datalist contains 3 elements
List<Data> datalist = Import.ImportCSVFile(
new StreamReader(file.InputStream)).ToList();
return RedirectToAction("EditDataList",
new RouteValueDictionary(new { DataList = datalist,
bla = "asfd" }));
}
public ViewResult EditDataList(List<Data> DataList=null,String bla="nothing set")
{
if (DataList == null)
{
DataList = base.CreateViewModelContext().DataList.ToList();
}
return View(DataList);
}
当我在fileupload操作方法中连接到调试器时,数据列表包含3个元素。当我步进到EditDataList时,DataList参数被初始化并包含0个元素。参数bla被设置为asdf,这是正确的
有没有人知道为什么我不接收EditDataList动作方法中的数据?
RedirectToAction
不是对另一个动作的简单调用。事实上,它经历了一个完整的响应-请求周期。以下是来自MSDN的描述:
返回一个HTTP 302响应到浏览器,这导致浏览器向指定的操作发出GET请求。
这真的是我们想要的行为吗?如果是,您可能很难将这些文件发送给新操作,最好将它们保存在某个地方,并仅向其他操作发送id。如果没有,您应该像调用常规方法一样简单地调用另一个操作。这是一件非常好的事情。
return EditDataList(datalist, "asfd");