我在同一控制器中有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
}

07-27 22:54