У меня есть переменная анонимного типа, которую я заполняю следующим образом (у меня есть две переменные jsonDataCache
и jsonData
, но я хочу иметь только одну, например, jsonData
):
var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (from b in myData
select new
{
//do things
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
Но если я хочу сначала определить эту переменную, прежде чем заполнять ее, в основном я хочу сделать что-то подобное:
var jsonData = null;
//check if jsonData in cache and if it is return Json(jsonData, JsonRequestBehavior.AllowGet);
jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (from b in myData
select new
{
//do things
}).ToArray()
};
//put jsonData in cache by key
return Json(jsonData, JsonRequestBehavior.AllowGet);
Как я могу это сделать?
Причина, по которой я хочу это сделать, потому что я хочу ввести кеш, поэтому мне нужно сначала определить переменную ant, чем проверить это в кеше, и если это не так, я сделаю то же самое выше.
В настоящее время я сделал это с двумя переменными, но я хочу использовать только одну.
Вот как я сейчас это сделал:
public virtual JsonResult GetSomething(int id, int type)
{
string keyPrefix = GetKeyPrefix(id, type);
var jsonDataCache = CacheManager.Get<object>(keyPrefix);
if(jsonDataCache != null)
return Json(jsonDataCache, JsonRequestBehavior.AllowGet);
var myData = GetFromDataase();
var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (from b in myData
select new
{
//do things
}).ToArray()
};
CacheManager.Set<object>(keyPrefix, jsonData);
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
UPDATE:
После всей вашей помощи я думаю, что это должно быть что-то вроде этого, надеюсь, это правильный путь:
public virtual JsonResult GetSomething(int id, int type)
{
string keyPrefix = GetKeyPrefix(id, type);
var jsonData = CacheManager.Get<object>(keyPrefix);
if(jsonData != null)
return Json(jsonData , JsonRequestBehavior.AllowGet);
var myData = GetFromDataase();
jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (from b in myData
select new
{
//do things
}).ToArray()
};
CacheManager.Set<object>(keyPrefix, jsonData);
return Json(jsonData, JsonRequestBehavior.AllowGet);
}