ASP.NET Ajax – Asynch请求有单独的会话吗?
我们正在编写一个搜索应用程序,将搜索条件保存到会话状态,并在asp.net更新面板内执行搜索.有时,当我们连续执行多次搜索时,第二次或第三次搜索有时会返回第一组搜索条件的结果.
示例:我们首次搜索“John Smith” – >显示John Smith结果.第二次搜索我们查看“Bob Jones” – >显示John Smith结果. 我正如我所说的那样保存会话状态中的所有搜索条件,并从ajax请求中的会话状态读取它以格式化数据库查询.当我们在VS中放置断点时,一切都表现正常,但没有它们我们就会得到原始搜索条件和结果. 我的猜测是因为它们被保存在会话中,ajax请求以某种方式获得自己的会话并将条件保存到该会话,然后每次从该会话中检索条件,但是非异步的东西能够看到标准何时被修改并相应地将更改保存到状态,但由于它们来自两个不同的会话,因此保存和读取的内容存在差异. 编辑::: 解决方法
正常的ASP.NET页面加载,回发和ASP.NET
AJAX部分回发之间没有多个会话.我可以肯定地告诉你.
而不是将搜索字符串存储在会话中,如何直接使用搜索TextBox的内容?我想不出你为什么需要随意改变它的任何理由,因为无论如何它将在整个页面生命周期中可用. 最后,关于您的要求…如果该功能还会引发部分回发,则使用UpdatePanel无法满足用户应该能够使用页面上的其他功能的要求.一次只能进行一次部分回发.如果在您的搜索过程中引发了其他事件,搜索请求将被取消,而不会发出任何通知. 使用页面方法或Web服务进行搜索将是一种更快,更简单,更健壮的方法.我通常不会插入我自己的网站,但我认为我的几个帖子与您正在做的事情完全相关: 您可以使用用户控件通过Web服务呈现搜索结果(比UpdatePanel快得多):http://encosia.com/2008/02/05/boost-aspnet-performance-with-deferred-content-loading/ 或者,您可以将搜索结果作为JSON返回并在客户端呈现(更快):http://encosia.com/2008/06/26/use-jquery-and-aspnet-ajax-to-build-a-client-side-repeater/ 这些方法中的任何一种都可以将您的搜索功能从部分回发范例中删除,以便它运行得更快,使用更少的带宽和服务器资源,并且不会妨碍其他UpdatePanel活动同时发生. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 与Microsoft HTTP Client Libraries v2.1.1
- ASP.net:如何测试LINQ查询
- asp.net-mvc – 为什么我的IIS Express Web应用程序项目在尝
- asp.net-mvc-3 – 在razor语句之间输出文字HTML会导致编译错
- asp.net-mvc-5 – 使用MVC属性路由的每个控制器的多个Route
- ASP.NET页面创建的事件序列
- 您的登录尝试未成功.请再试一次.在asp.net虽然密码重置
- asp.net – System.Web.Security.MembershipProvider(EPiSe
- asp.net-mvc – 在控制器的OnException中确定结果类型
- asp.net – 如何在回发中保存asp:HiddenField值?
- asp.net-mvc – MicrosoftMvcValidation.js VS j
- 休息 – 无法序列化内容类型的响应正文
- asp.net-mvc-3 – 如何在web.config中设置不同的
- asp.net-mvc-3 – MVC3正确的方式来改变每个请求
- asp.net – ListView禁用基于角色的插入和编辑按
- asp.net – 在IIS中,existingResponse =“PassTh
- asp.net – 从SqlMembershipProvider迁移到自定义
- asp.net – 清除AjaxToolkit AsyncFileUpload控件
- asp.net-core – AspNetCore中的控制器配置
- asp.net-core-mvc – 无论DataAnnotations属性如