我有一个帖子操作导入:
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?
答案 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();
}