私は自分のアクションとビューでUploadFileという名前のmvcページを持っています。私の行動では、TempDataを使用して、ビューが更新されたときにExcelリストを再利用するために、別のものに送信しました。これはグリッドの最初のページから2ページ目に行くときに機能しました。しかし、2回目のリフレッシュ後に、tempdataが消えて、再び空のグリッドができました。TempDataを複数使用する
別のビュー/アクションを渡すまで、自分の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();
}
}
なぜ一時データを何回使用したいのですか?ポスト関数の外でオブジェクトのインスタンス化を引き出すこともできますが、検証プロセスをパスすると複数のクライアントが同じオブジェクトを混在させる可能性があります。私はあなたが私の質問に答える前に、あなたの最終目標を理解するように言わなければならないと思います。 – dev8989