2013-11-28 28 views
2

我對ASP.NET比較陌生(目前在大學讀書),並且我對C#有很好的瞭解。如何從AJAX服務訪問代碼隱藏?

問題:

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

當用戶登錄一個Person對象時,將在後面的Code中創建與數據庫相關的所有信息。如果我刷新/移動到另一個時代,這些對象正在被重新創建。

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 
} 

1問:是否有可能避免Person對象的娛樂不知何故(保持它不存儲在客戶端上)?

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

我已經創建了一個AJAX服務,其中有一個獲取用戶項目計數的方法。我設法做到的唯一方法是將用戶名從HTTPContext傳遞到服務 - 創建一個新的人員對象並從那裏提取我想避免的信息。

[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> 

第二個問題:是否有可能訪問當前包含代碼隱藏頁面內內已創建的Person對象WCF服務,而不是創建一個新的?

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

我一直在試圖找出上述超過一個星期,現在我越來越困惑。螞蟻的幫助將不勝感激!

謝謝。

回答

1

是否有可能避免重新創建Person對象 (保留它而不將它存儲在客戶端上)?

是的,用ASP.NET caching

是否有可能訪問當前包含代碼隱藏頁面中從 WCF服務中,而不是創建一個新的已創建的Person對象 ?

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

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

您可以創建一個返回並操作對象的Service Layer。這可以通過Web服務進行包裝 - 無論是WCF還是Restful服務。

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

+0

是的,一組對象(人員,項目,任務)對每個用戶都是唯一的。它們是在用戶登錄時創建的,我希望保留它們並僅在需要時更新它們(例如,當用戶添加新項目時)它們只保存與特定用戶相關的數據。我不認爲將這些對象存儲在會話中是一種很好的做法嗎? 編輯:我仍然可以使用緩存保存/訪問這些對象,考慮到他們持有用戶特定信息的事實? – user3036434

+0

「我不認爲將這些對象存儲在會話中是一種很好的做法。」我避免使用Session,但取決於需求。在你的情況下,你可能不需要爲每個頁面加載所有人的數據 - 因此,你不應該使用Session或者擔心每個頁面需要調用少量數據。 –

+0

「我仍然可以使用緩存保存/訪問這些對象,考慮到它們擁有用戶特定的信息?」如果它全部是用戶特定的數據,那麼緩存沒有多大用處(取決於當然用戶的數量)。 –