下面是我的代码
#pragma multi_compile_instancing
在索引IActionResult中,我正在调用方法GetBranchWiseList(),该方法大约需要30秒才能运行,而在GetMemberList IActionResult中,我再次需要相同的数据,因此必须再次运行此方法
所以现在在这里,而不是在GetMemberList()中再次运行此方法 我想将其存储在全局列表中
这将给我带来一个好处,列表将在Index()中填充一次,而无需从GetMemberList()中的数据库中再次获取(将在两种Action方法中共享全局列表)
为此,我声明了一个全局列表
private readonly IConfiguration configuration;
private readonly IHostingEnvironment env;
private readonly IActionContextAccessor actionContextAccessor;
private utility util;
public GeneratePDFController(IConfiguration _configuration, IHostingEnvironment _env, IActionContextAccessor _actionContextAccessor)
{
configuration = _configuration;
env = _env;
actionContextAccessor = _actionContextAccessor;
util = new utility(_configuration, _env);
}
public IActionResult Index()
{
IndusIndVM model = new IndusIndVM();
try
{
util.DeleteFolders();
util.CreateFolders(HttpContext.Session.GetString("UserID"));
model.BranchList = GetBranchWiseList();
}
catch (Exception ex)
{
TempData["Msg"] = ex.Message;
}
finally
{
}
return View(model);
}
public IActionResult GetMemberList(string BranchCode)
{
IndusIndVM model = new IndusIndVM();
try
{
Parallel.Invoke(
() => { model.BranchList = GetBranchWiseList(); },
() => { if (BranchCode != null) { model.MemberList = GetMemberWiseList(BranchCode); } }
);
}
catch (Exception ex)
{
TempData["Msg"] = ex.Message;
}
finally
{
TempData["BranchCode"] = BranchCode;
}
return View("Index", model);
}
和构造函数
private List<PendingListBranchWise> BL;
然后在Index()中将列表存储到其中
BL = new List<PendingListBranchWise>();
现在在GetMemberList()
model.BranchList = GetBranchWiseList();
BL = model.BranchList;
但是BL在这里是空的,我也尝试使该列表也是静态的,但是对于GetMemberList()它的值也是空的,在TempData中存储也不是一个好选择
如何保留此列表并在ActionMethods中使用它?
答案 0 :(得分:1)
有多种方法可以实现此目的: 1.将[OutputCache(-)]属性用于Index方法,这样就不必每次都调用它, 它将返回缓存的结果。 2.将列表存储在应用程序会话中。 3.将此列表存储在全局变量中。