我在同一控制器中有2个动作。
public ActionResult Index(string filter, int[] checkedRecords)
和
public ActionResult ExportChkedCSV(string filter, int[] checkedRecords)
第二个动作(ExportChkedCSV)包含此重定向:
if (reject != 0)
{
return RedirectToAction("Index", new { filter, checkedRecords });
}
当我逐步执行时,在RedirectToAction语句上正确填充了checkedRecords参数,但是当它从此处命中Index ActionResult时,checkedRecords为null。我试过做filter =,checkedRecords =等。我从View到Controller都没有问题。如果将数组类型更改为其他任何类型,我都可以获取值-如何将int []从一个动作传递到另一个动作?我究竟做错了什么?谢谢
最佳答案
在MVC中,您不能发送复杂类型作为重定向参数,而只能发送数字和字符串之类的基本类型
使用TempData传递数组
...
if (reject != 0) {
TempData["CheckedRecords"] = yourArray;
return RedirectToAction("Index", new { filter = filterValue });
}
...
public ActionResult Index(string filter) {
int[] newArrayVariable;
if(TempData["CheckedRecords"] != null) {
newArrayVariable = (int[])TempData["CheckedRecords"];
}
//rest of your code here
}