Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET到HTML5本地存储_C#_Javascript_Asp.net_Html - Fatal编程技术网

C# ASP.NET到HTML5本地存储

C# ASP.NET到HTML5本地存储,c#,javascript,asp.net,html,C#,Javascript,Asp.net,Html,在ASP.NET(web表单)中,我从SQL数据库中检索一组键/值对,以便在DropDownList中使用。这个列表非常大(可以超过2000个条目),并且在网站上的许多页面上多次使用,我一直在研究如何在本地客户端上缓存这组数据以减少带宽。列表不会经常更改,因此缓存副本一周或更长时间就可以了 我想知道使用HTML5本地存储存储此列表并从客户机存储中填充DropDownList是否可行。如果在本地找不到数据,则继续查询数据库中的列表。如果选择框中有2000多个条目,则听起来无论如何都不可用 看看类似

在ASP.NET(web表单)中,我从SQL数据库中检索一组键/值对,以便在DropDownList中使用。这个列表非常大(可以超过2000个条目),并且在网站上的许多页面上多次使用,我一直在研究如何在本地客户端上缓存这组数据以减少带宽。列表不会经常更改,因此缓存副本一周或更长时间就可以了


我想知道使用HTML5本地存储存储此列表并从客户机存储中填充DropDownList是否可行。如果在本地找不到数据,则继续查询数据库中的列表。

如果选择框中有2000多个条目,则听起来无论如何都不可用

看看类似Select2的东西。特别是“加载远程数据”示例


我参与编写了两个应用程序,其中数据定期来回推送,我们用Javascript构建了一个API对象,用于处理请求时从服务器提取的数据

API模块请求数据并根据其成功状态采取操作。如果您觉得以后可能需要扩展返回的数据类型,您可以构建一个简单的API模块来使用,或者只构建一个AJAX调用来提取下拉列表中的数据

API接口的示例如下:

/** 
 * Parameter 1, string - Command Name for the server to interpret 
 * Parameter 2, object - Data that should be passed to the server (if necessary)
 * Parameter 3, string - the HTTP method to use: 'GET', 'POST', 'PUT' etc.
 * Parameter 4, function - the callback to fire once the response is received.
**/
api('CommandName', { key: 'value' }, 'METHOD', function(response) {
    if(response.success) {
         //Store data in localStorage here
    }
});
如上所述,您在网站的整个页面中多次使用数据。因此,在JavaScript中,您将编写一个加载检查,确定数据是否已存储在localStorage中,如果未存储,则调用API填充数据。这将确保客户机始终具有可用的数据。可以这样做:

//On Load
if(!localStorage.dropdown) {
    api('CommandName', { key: 'value' }, 'METHOD', function(response) {
        if(response.success) {
            localStorage.dropdown = response.data;
        }
    });
}

听起来是个合理的主意。你尝试了什么?你在哪里卡住了?我可以通过将信息转储到页面上的隐藏控件,然后使用JavaScript从那里获取列表数据,从而将列表数据放入本地存储。尽管如此,此方法仍会在每次加载时查询数据库并将数据传输到页面。我希望社区知道一种更好的方法来处理客户机和服务器之间的链。听起来,在查询数据库之前,您需要确定数据是否存在于客户端。在这种情况下,您要做的是通过AJAX而不是在
Page\u Load
中获取数据。这样,您可以在发出AJAX请求之前使用JavaScript检查缓存的数据。为此,您需要研究使用AJAX。我已经实现了一个修改过的下拉控件,如您建议的下拉控件(虽然不是功能填充的)。Select2看起来是一个很好的控件,但我目前的主要目标是在本地客户端上缓存数据集。好的@defect833,如果你想这样做的话。您需要将加载选项的逻辑从webforms页面移到服务上。在visual studio中,创建一个新的DropDowns.ashx,以JSON格式返回选项。然后需要在页面上将客户端javascript写入ajax(加载)DrowDowns.ashx服务中的选项。然后,您需要设置元缓存头,让浏览器缓存.ashx文件,而无需担心本地存储。