Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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# 使用Ajax还是不使用Ajax创建列表页面_C#_.net_Ajax - Fatal编程技术网

C# 使用Ajax还是不使用Ajax创建列表页面

C# 使用Ajax还是不使用Ajax创建列表页面,c#,.net,ajax,C#,.net,Ajax,在这里,我谈论的是产品列表页面,其中有多个过滤器可以过滤页面上出现的产品列表,如产品类型、类别、价格范围等 在过去,我使用ajax和no-ajax两种方式完成了这样的页面 我喜欢在这样的页面中使用ajax的地方是,当选择过滤器时,我只更新包含产品列表的部分。不需要刷新整个页面,这可能会导致重新加载顶部栏、横幅等上的图像,并降低用户性能。在我看来,从用户体验来看,Ajax方式变得更加紧凑和响应速度更快 对我来说,ajax路线的缺点是;由于URL中没有维护过滤器状态,因此我最终在服务器上维护它们。如

在这里,我谈论的是产品列表页面,其中有多个过滤器可以过滤页面上出现的产品列表,如产品类型、类别、价格范围等

在过去,我使用ajax和no-ajax两种方式完成了这样的页面

我喜欢在这样的页面中使用ajax的地方是,当选择过滤器时,我只更新包含产品列表的部分。不需要刷新整个页面,这可能会导致重新加载顶部栏、横幅等上的图像,并降低用户性能。在我看来,从用户体验来看,Ajax方式变得更加紧凑和响应速度更快

对我来说,ajax路线的缺点是;由于URL中没有维护过滤器状态,因此我最终在服务器上维护它们。如果我想处理多窗口场景,这会变得很复杂,而且在每个会话的服务器内存中维护这种状态的成本也很高

不使用ajax,简单地保留url上的所有过滤器值并刷新页面是非常简单的,但是只刷新真正需要刷新的窗格的奢侈已经失去了

最近,我看到很多大型电子商务网站在其列表页面上使用非ajax方法,这让我再一次质疑,由于长期维护的便利性和牺牲一点用户体验,构建非ajax列表是否更有效


我即将开始为一个产品实现一个新的列表页面,我可以灵活地选择任何一种方式,我将非常感谢您的输入。

对我来说,Ajax只适用于页面的小部分。我把它看作是这个请求将要传输多少数据。如果您想要传输一个大的列表,那么使用Ajax将失去它的效力,因为页面的大部分内容将被重新加载

另一方面,如果您只是在页面上重新加载一小部分数据,那么Ajax通过减少服务器上的负载来最大限度地提高其效率

我发现走非Ajax路线是最容易的。而且,您可以根据web.config和IIS中的网站设置实现响应速度非常快的页面。您需要确保为IIS中的静态页面启用页面缓存,以减少css、图像和js的重新加载。这将允许以更快的速度刷新动态页面,并产生只有页面内容区域正在重新加载的错觉


此外,启用静态内容压缩也将有助于减少页面的初始加载。

如果您只是将每个选项卡状态隐藏在隐藏的表单字段中,并将它们与AJAX请求一起传递,然后从AJAX响应中更新它们,那么在AJAX情况下处理多个选项卡/窗口并不是那么困难。不过,这仍然不允许用户将过滤后的页面作为书签


在不可设置书签、基于AJAX的导航倾向于打破后退按钮以及可能没有javascript可用/启用的用户之间,我想说的是非AJAX,至少在一开始是这样。如果你真的想用AJAXy的方式来实现这一点,那就把它作为普通HTML解决方案的一个可选增强,用户可以选择禁用它,即使他们能够使用它。

我还想指出,Ajax需要JavaScript,因此,你应该考虑终端用户没有启用JS的可能性。即使产品列表部分看起来像一个页面的很大一部分,但使用良好的数据传输模型对象可以非常有效地最小化服务器之间传输的数据,这些对象是为该视图而构建的,并且只包含绘制列表所需的属性。例如:姓名、图片名称、价格