【问题标题】:HttpContext and AutoComplete ExtenderHttpContext 和自动完成扩展器
【发布时间】:2009-02-11 17:33:10
【问题描述】:

我正在使用 Ajax 控制工具包中的 AutoComplete Extender。 我有一个这个扩展器使用的网络服务。在 web 方法中,我需要访问我的 ASPX 页面中存在的值 empid。我将此值放在我的 ASPX 页面的 HttpContext's Items 集合中。

HttpContext.Items["empid"]=<value>;

在网络方法中,我尝试使用

string s=Context.Items["empid"];

但是 Items 集合那里没有任何项目。这是因为自动完成扩展器控件正在执行部分回发吗?

有人可以帮忙吗?

【问题讨论】:

    标签: asp.net ajax ajaxcontroltoolkit


    【解决方案1】:

    自动完成扩展器在 Web 服务上使用具有特定签名(在文档中解释)的 Web 方法。这将使用 JavaScript(在幕后)从浏览器调用。

    Web 服务及其 Web 方法对您的页面一无所知 - 它们只知道通过 Web 方法的参数传递给它们的信息。

    【讨论】:

    • 感谢理查德的回复。不过我还是有一个疑问。我可以在这个 web 方法中访问 Cache 对象。我在 Context.Cache["key"] 下使用它。我很想知道它是如何工作的?
    • 调用 Context.Cache["key"] 如果不存在名为“key”的项目,则只会返回 null,所以我认为这就是您所看到的。
    • 不,Richard 我在 Context.Cache["key"] 中得到了正确的值。实际上,我在 page_init 事件期间添加了 Cache["somekey"]=value 和 HttpContext.Items["empid"]=value 。当我在 web 方法中访问 Context.Cache 时,我得到了正确的值,但是当我尝试访问 Items 时,我没有得到它们。
    • 我不明白你的意思 Deepa - 但是从设计的角度来看,我会说 Web 方法不应该依赖缓存中的数据,除非它自己将数据放在那里。
    • 这是我的设计。自动完成扩展器正在使用 Web 方法。此 Web 方法正在从已填充的缓存对象中搜索字符串。请分享您对此的看法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2011-11-15
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多