重定向时将数组或字符串列表从一个操作传递到另一个操作

时间:2011-11-10 00:51:27

标签: .net asp.net-mvc

我有一个帖子操作导入:

public ActionResult Import()
{
    var fileNames = new List<String>();

    foreach (string path in Directory.GetFiles(directoryPath))
    {
        //do a whole bunch of stuff
        ...
        fileNames.Add(path.Split('\\').Last());            
    }

    return RedirectToAction("Index", new { InvalidFiles = fileNames });
}

如您所见,它会重定向到Index操作,并传递List<String>个文件名

public ActionResult Index(List<String> InvalidFiles)
{
    return View();
}

Index操作中,List会输入正确数量的元素,但是所有实际字符串都已从文件名更改为字符串“System.Collections.Generic.List`1 [System。字符串]”。

知道为什么会这样吗?有没有更好的方法将列表传递给新操作,可能使用TempData?

1 个答案:

答案 0 :(得分:4)

您可以使用TempData暂时保留操作之间的数据。

public ActionResult Import()
{
    var fileNames = new List<String>();

    foreach (string path in Directory.GetFiles(directoryPath))
    {
        //do a whole bunch of stuff
        ...
        fileNames.Add(path.Split('\\').Last());            
    }

    TempData["fileNames"] = fileNames;

    return RedirectToAction("Index");
}


public ActionResult Index()
{
    var invalidFiles = TempData["fileNames"] as List<String>;

    return View();
}