2017-04-03 76 views
0

我用jquery ajax調用了一個很好的網頁,但注意到Page_Load未被調用用於jquery ajax POST請求。我需要Page_Load調用來訪問已登錄用戶的名稱,以通過POST接收到的數據來存儲數據庫,因爲代碼隱藏中的靜態WebMethod無法訪問Page對象。Page_Load未在POST請求上調用

我的問題:Page_Load沒有被POST請求調用是正常的嗎?如果是這樣,如何獲取用戶名的Page對象,而不使用Page_Load?

comment on this question我讀:支持WebMethod不再維護。您應該考慮切換到Web API,因爲它支持得很好(並且更簡單!)

但是,使用Google搜索並沒有真正產生關於Web API的信息,因爲這是一個非常普遍的搜索術語。有關於此的任何信息?


更新:

我的問題是由靜態的WebMethod,使用的HttpContext如下評論解決,所以我並不需要的Page_Load。

+0

是存儲在'session'您的用戶名直接實現同樣的事情? – Curiousdev

+0

@Curiousdev不,用戶名取自Page.User.Identity.Name。而Session也不適用於靜態WebMethod。 – Roland

+0

您正在使用ajax ...因此,您在「POST」後不會有Page_Load,因爲您的頁面未刷新。你可以在ajax post的響應中刷新你的頁面,但是如果你使用ajax,這沒有多大意義。你必須創建一個策略來在響應後訪問這個值。但是您首先需要了解ajax請求的工作原理。 –

回答

1

有兩種方法可以做到這一點

  1. 在JavaScript中添加該設定的電流username一個變量,並通過這個作爲參數傳遞給POST方法。

    var usrName = "@HttpContext.Current.User.Identity.Name";

  2. 的HttpContext也可在靜態的WebMethod代碼隱藏,所以你可以使用這個以及

+1

有了這個解決方案,Page_Load不需要被調用,消除了我的第一個問題。 – Roland