У меня есть jqgrid в MainPage.aspx, и я получаю данные со страницы JSON (страница JsonSource.aspx). Эта страница JSON получает данные из DataTable. И я хочу получить этот DataTable на странице A (я не хочу снова получать данные из базы данных).
Это MainPage.aspx:
jQuery("#jQGridDemo").jqGrid({
url: 'http:///JsonSource.aspx',
datatype: "json",
В JsonSource.aspx:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = InitDataSource();
string json = ConvertDataTabletoString(dt);
////context.Response.Write(json);
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();
}
Если это невозможно, вы можете дать мне другое решение. Мои данные огромны, и я хочу получить только 1
Здесь вы можете использовать по крайней мере 3 подхода. Кэш, сеансы или даже файлы cookie (не такие жизнеспособные).
Кэш будет лучшим вариантом - данные не привязаны к конкретному пользователю или заданному сеансу.
Как отметил @Zaki в комментарии, вы можете сделать недействительным кеш через x минут, а затем при необходимости перезагрузить.
Простая обработка кеша:
public static readonly ObjectCache cache = MemoryCache.Default; // this would be an instance variable
public void AddToCache<T>(string key, T item)
{
cache.Add(key, item, DateTime.Now.AddMinutes(CACHE_TIMEOUT));
}
public T GetFromCache<T>(string key) where T : class
{
try
{
return (T)cache[key];
}
catch
{
return null;
}
}
Простое управление сеансом:
Session["MyData"] = json; // set data to session variable MyData
string jsonData = Session["MyData"]; // get the data.
Однако вы должны сделать некоторые проверки, чтобы сделать это еще более надежным.