使用 TempData 几个

Emr*_*mre 2 c# asp.net-mvc asp.net-mvc-4

我有一个名为 UploadFile 的 mvc 页面,其中包含它们的操作和视图。在我的操作中,我使用 TempData 从一个发送到另一个,以便在刷新视图时重用我的 excel 列表。它在从网格的第一页到第二页时起作用。然而,第二次刷新后,临时数据消失了,我又得到了一个空网格。

在传递另一个视图/操作之前,我如何保留和重用我的 TempData。

        [HttpGet]
        public ActionResult UploadFile()
        {
            return View("UploadFile", TempData["Veri"]);
        }

        [HttpPost]
        public ActionResult UploadFile(HttpPostedFileBase file)
        {
            try
            {

                string _FileName = string.Empty;
                string _path = string.Empty;
                List<ImportExcelDto> listExcel = new List<ImportExcelDto>();


                if (file.ContentLength > 0)
                {
                    _FileName = Path.GetFileName(file.FileName);
                    _path = Path.Combine(Server.MapPath("~/App_Data/uploads"), _FileName);

                    string tempfolder = Server.MapPath("~/App_Data/uploads");


                    var fileGeneration = new DirectoryInfo(Server.MapPath("~/App_Data/uploads"));
                    fileGeneration.GetFiles("*", SearchOption.AllDirectories).ToList().ForEach(f => f.Delete()); //Directory'deki eski excel dosyalar?n? temizler

                    file.SaveAs(_path);
                }
                ViewBag.Message = "Dosya Ba?ar?yla Aktar?ld?!";

                DataTable dt = Helpers.GetDataTableFromExcel(_path, true);

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    ImportExcelDto item = new ImportExcelDto() { KartNo = dt.Rows[i][0].ToString(), Tutar = dt.Rows[i][1].ToDecimal() };
                    listExcel.Add(item);
                }

                var TempDataVeri = listExcel;
                TempData["Veri"] = TempDataVeri;
                return View("UploadFile", listExcel);
            }
            catch (Exception ex)
            {
                ViewBag.Message = "Dosya Aktar?lamad?!";
                return View();
            }
       }
Run Code Online (Sandbox Code Playgroud)

Ari*_*jee 6

使用KEEPPEEK

例子 :

object value = TempData.Peek("value");

object value = TempData["value"];
//later on decide to keep it
TempData.Keep("value");
Run Code Online (Sandbox Code Playgroud)

这将帮助您保留 1 次以上访问/请求的数据。

通常一旦您访问TempData它就会被删除

Peek当您总是希望为另一个请求保留值时,您可以使用。Keep保留值时使用取决于附加逻辑。