1

我在控制器中有两个动作。一个显示文件上传表单,另一个显示上传结果。我创建了一个名为 FileInfo 的 POCO,即

public class FileInfo
    {
        public string Name { get; set; }
        public int Length { get; set; }
        public string FileType { get; set; }
        public string ErrorMessage { get; set; }

    }

当我提交表单时,Upload 操作会创建并填充 FileInfo 对象,然后重定向到名为 results 的第二个操作。我希望能够在结果操作中使用相同的文件信息对象。

我可以使用 TemPData[] 解决这个问题,但它是有限的,因为它只保存单个请求的对象数据。我认为必须有更好的方法在控制器操作之间共享对象。感谢任何帮助!

// 上传动作

 List<FileInfo> fileInfo= new List<FileInfo>();
//populate  the fileInfo object using fi.Add()

if ((status.ToString() == "OK"))
             {
                 TempData["Info"] = fileInfo;
                 return RedirectToAction("Results");

             }
             else
             {
                 return RedirectToAction("Index");
             }

//结果动作。

public ActionResult Results()
        {
            List<FileInfo> fi = TempData["Info"] as List<FileInfo>;
            if (fi != null)
            {
                return View(fi);
            }
            else
            {
                return View("Index");
            }
        }
4

1 回答 1

0

如果您需要一些东西比后续请求更长时间,您必须将其放入Session或放入持久存储(例如数据库)中。

于 2012-12-19T16:21:39.227 回答