我在控制器中有两个动作方法。在第一个操作方法的帮助下,我从数据库中获取所需的数据,我需要在第二个操作方法中获取这个获取的数据。我需要在不将任何参数传递给第二个方法的情况下实现此目的。我不知道怎么做,因为我是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 };
}
答案 0 :(得分:0)
您可以使用会话变量来保存“GetData”操作中'lst'变量的值:
enc(X)
然后您可以按如下方式检索它并将其转换为适当的类型:
Session["data"] = lst
答案 1 :(得分:0)
您也可以使用TempData
TempData["Name of Tempdata variable "]= File.GetDataFromDB(backupFileName)
在其他行动中你可以收到它
var getdatafromanotherAction= TempData["Name of Tempdata variable"]
答案 2 :(得分:-1)
如果要在单个呼叫中同时调用两种操作方法,可以使用 在第一个方法中返回RedirectToAction(&#34; GetInvalidRecords&#34;)。此外,您可以创建一个类级私有变量_listdata。在第一种方法中设置它,进入第二种方法。
如果要在两次调用之间保留数据,请使用Tempdata.Keep和Tempdata.Peek,但是您需要确保第二种方法的调用紧跟第一种方法。 Tempdata仅在2个请求之间工作,除非您通过再次使用.Keep和.Peek延长其持续时间。
如果要将这两种方法分开调用,则可以使用会话变量来保存数据。
或者,您可以将第二个方法调用的参数保持为可选。因此,它不会伤害jsonresult方法的其他调用。在方法内部,您可以检查参数是否为空。