我们目前使用UpdatePanels来执行AJAX的一个原因是我们的BL和DA层传递了Page.User.Identity进行身份验证。
有没有办法访问它?
答案 0 :(得分:2)
是的,您可以通过HttpContext.Current.User
获取当前用户。来自Page.User
的MSDN文档:
此属性使用HttpContext object的用户属性来确定 请求来自何处。
至于更广泛的问题,“如何将jQuery Ajax和PageMethods与实例变量一起使用?”答案是“不直接”。
执行页面方法时,不会创建页面实例。 (Why do ASP.NET AJAX page methods have to be static?是对正常页面操作和静态页面方法之间差异的概念性概述)。
在页面方法中访问实例变量的唯一方法是在初始页面请求期间首先将变量放入Session
- 但这是一个相当脆弱的策略:你最好找出获取数据的另一种方法或者有问题的价值。
答案 1 :(得分:0)
我同意Jeff Sternal对这篇文章的回答。在我当前的项目中,我们经常使用会话作为“便笺簿”来存储数据,供以后由PageMethods和ASMX webservices使用。
但是,如果你不喜欢以这种方式使用会话,那么另一种方法应该是一个可行的选择:
在页面创建时,您可以将实例变量值放入javascript变量或隐藏字段中。从那里,它们可以通过javascript / jquery轻松访问,并在调用webservices时包含为params。然后,您可以对Web服务(PageMethods,ASMX服务或其他服务)进行编码,以将这些值作为参数。