在MVC3中的控制器操作之间共享模型对象

时间:2012-12-19 14:42:15

标签: asp.net-mvc-3

我在控制器中有两个动作。一个显示文件上载表单,另一个显示上载结果。 我创建了一个名为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; }

    }

当我提交表单时,“上载”操作会创建并填充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");
            }
        }

1 个答案:

答案 0 :(得分:0)

如果您需要更长时间的后续请求,则必须将其放在Session或持久存储(例如数据库)中。