我在控制器中有两个动作方法 . 在第一个动作方法的帮助下,我从数据库中获取所需的数据,我需要在第二个动作方法中获取这个获取的数据 . 我需要在不将任何参数传递给第二个方法的情况下实现此目的 . 我不知道如何做到这一点,因为我是MVC的新手 .
方法1:
public ActionResult GetData(HttpPostedFileBase file)
{
string folderPath = Server.MapPath(ConfigurationManager.AppSettings["BackupPath"]);
List<string> invalidRecords = new List<string>();
string backupFileName = FileUpload.BackupFile(file, folderPath);
invalidRecords = File.GetDataFromDB(backupFileName);
List<DataVM> lst = serviceData.GetAllData();
return View(lst);
}
方法2:
[HttpPost]
public JsonResult GetInvalidRecords()
{
List<string> InvalidVehicleId = InvalidRecords;
return new JsonResult { Data = InvalidRecords };
}
3 回答
您可以使用会话变量来保存'GetData'操作中'lst'变量的值:
然后您可以按如下方式检索它并将其转换为适当的类型:
https://msdn.microsoft.com/en-us/library/ms178581.aspx
您也可以使用TempData
在其他行动中你可以收到它
如果要在单个调用中调用两个操作方法,可以在第一个方法中使用返回RedirectToAction(“GetInvalidRecords”) . 此外,您可以创建一个类级私有变量_listdata . 在第一种方法中设置它,进入第二种方法 .
如果要在2个调用之间保留数据,请使用Tempdata.Keep和Tempdata.Peek,但需要确保第二个方法的调用紧跟第一个方法 . Tempdata仅在2个请求之间工作,除非您通过再次使用.Keep和.Peek来延长其持续时间 .
如果要将这两个方法分开调用,则可以使用会话变量来保存数据 .
或者,您可以将第二个方法调用的参数保持为可选 . 所以,它不会伤害jsonresult方法的其他调用 . 在方法内部,您可以检查参数是否为空 .