В моем приложении ASP.net несколько запросов AJAX к действию контроллера LoadPartialView загружают частичное представление непосредственно внутри основного представления.
public ActionResult LoadPartialView(string triggerParameter)
{
var myObject = GetData(triggerParameter);
SaveObjectToSession(myObject);
return PartialView("_PartialViewName", myObject);
}
public void SaveObjectToSession(object myObject)
{
_httpContextAccessor.HttpContext.Session.Set("objectKey", ValueToBytes(myObject));
}
Мое намерение состоит в том, чтобы повторно использовать данные, возвращаемые каждым вызовом LoadPartialView, в другом действии контроллера. Я пытаюсь сделать это с помощью HttpContext.Session, но это не похоже на работу.
public ActionResult Details(string triggerParameter)
{
if (_httpContextAccessor.HttpContext.Session.Get(triggerParameter) == null)
{
return RedirectToAction(nameof(Index));
}
....
}
Я пытался использовать оператор блокировки в LoadPartialView следующим образом:
private static readonly object Lock = new object();
public ActionResult LoadPartialView(string triggerParameter)
{
lock(Lock) {
var myObject = GetData(triggerParameter);
SaveObjectToSession(myObject);
return PartialView("_PartialViewName", myObject);
}
}
но это тоже не работает.
Можно ли повторно использовать данные, возвращенные методом действия частичного просмотра, в другом действии контроллера без необходимости дважды запрашивать: GetData ()?