我們目前使用UpdatePanels進行AJAX的一個原因是我們的BL和DA層傳遞了Page.User.Identity進行身份驗證。如何將jQuery Ajax和PageMethods與實例變量一起使用?
有沒有辦法訪問它?
我們目前使用UpdatePanels進行AJAX的一個原因是我們的BL和DA層傳遞了Page.User.Identity進行身份驗證。如何將jQuery Ajax和PageMethods與實例變量一起使用?
有沒有辦法訪問它?
是的,您可以通過HttpContext.Current.User
獲取當前用戶。從MSDN文檔Page.User
:
此屬性使用的HttpContext 對象的用戶屬性來確定 在請求起源。
至於你的更廣泛的問題,「我怎樣才能使用jQuery Ajax和PageMethods與實例變量?」答案是「不直接」。
執行頁面方法時,不會創建頁面的任何實例。 (Why do ASP.NET AJAX page methods have to be static?是常規頁面操作和靜態頁面方法之間差異的概念性概述)。 在頁面方法中訪問實例變量的唯一方法是首先在初始頁面請求期間將變量放入Session
- 但這是一個相當脆弱的策略:您最好找出另一種方法來獲取有問題的數據或值。
我同意Jeff Sternal對這篇文章的回答。在我當前的項目中,我們經常使用會話作爲「暫存區」來存儲數據,供PageMethods和ASMX webservices稍後使用。
但是,如果你不喜歡以那種方式使用會話,這裏是另一種方法,應該是一個可行的選擇:
在頁面創建時,你可以把實例變量的值轉換爲JavaScript瓦爾或隱藏領域。從那裏,他們可以很容易地通過javascript/jquery訪問,幷包含在調用web服務的參數中。然後,您可以編寫您的Web服務(PageMethods,ASMX服務或其他)來將這些值作爲參數。
是否安全? – Homer 2010-10-07 18:17:27
啊,好點。我正在考慮將數據從ASPX實例獲取到PageMethod或ASMX webservice的一般方法。但是如果數據很敏感,那麼會話肯定比將數據放在頁面上更安全。 – mikemanne 2010-10-07 19:08:11