簡體   English   中英

如何從AJAX服務訪問后台代碼?

[英]How to access code-behind from AJAX Service?

我對ASP.NET相對較新(目前正在大學學習),並且對C#有很好的了解。

問題:

我有一個MSQL數據庫和一個處理SQL請求的DatabaseConnection類。 從數據庫中獲取數據后,我將其存儲在3個類中-Person,Project,Task,其中Person類包含用戶信息(角色,名稱等)和2個列表-List和List。

當用戶登錄時,將在“代碼背后”中創建一個Person對象,其中包含來自數據庫的所有相關信息。 如果我刷新/移動到另一個年齡段,則將重新創建這些對象。

public partial class _Default : System.Web.UI.Page
{
private Person user;

   protected void Page_Load(object sender, EventArgs e)
   {
       user = new Person(User.Identity.Name.ToString());
   }
   //other methods
}

第一個問題:是否有可能避免以某種方式重新創建Person對象(保持它而不將其存儲在客戶端上)?

繼續:現在,我想從這些類中獲取數據並使用AJAX / JQUERY顯示。

我創建了一種AJAX服務,其方法可以為用戶獲取項目計數。 我設法做到這一點的唯一方法是將用戶名從HTTPContext傳遞到服務-創建一個新的person對象,並從那里提取我要避免的信息。

[ServiceContract(Namespace = "")]
 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  public class AjaxService
 {
[OperationContract]
 public string UserProjectCount(String email)
 {
    Person user = new Person(email);
    String projectCount = user.getProjectsCount() + "";
    return projectCount;       
  }
}

我從Default.aspx頁調用此方法:

<script type="text/javascript">
    function pageLoad() {
        var username = '<%=HttpContext.Current.User.Identity.Name %>';
        AjaxService.UserProjectCount(username, OnComplete, OnError);
    }
    function OnComplete(result) {
        var projCount = "" + result;
        $get("myProjects").innerText = " (" + projCount + ")";
    }
    function OnError(errorMessage) {
        alert(errorMessage.get_message());
    }
  </script>

第二個問題:是否可以從WCF服務中訪問CodeBehind頁面中當前包含的已經創建的Person對象,而不是創建一個新的Person對象?

第三:我可以/應該創建一個包含所有這些數據對象的服務嗎?

到目前為止,我一直在努力解決上述問題,而我越來越困惑。 螞蟻的幫助將不勝感激!

謝謝。

是否有可能避免以某種方式重新創建Person對象(保持它而不將其存儲在客戶端上)?

是的,使用ASP.NET緩存

是否可以從WCF服務中訪問CodeBehind頁面中當前包含的已經創建的Person對象,而不用創建一個新的Person對象?

是的,可以在服務中使用緩存的對象。

是否可以創建包含所有這些數據對象的服務?

您可以創建一個返回並操縱對象的服務層 這可以由Web服務(WCF或Restful服務)包裝。

如果要存儲在內存中的對象(而不只是磁盤)是特定於用戶會話的對象,請查看ASP.NET Session

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM