我對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:我可以/應該創建一個包含所有這些數據對象的服務嗎?
我一直在試圖找出上述超過一個星期,現在我越來越困惑。螞蟻的幫助將不勝感激!
謝謝。
是的,一組對象(人員,項目,任務)對每個用戶都是唯一的。它們是在用戶登錄時創建的,我希望保留它們並僅在需要時更新它們(例如,當用戶添加新項目時)它們只保存與特定用戶相關的數據。我不認爲將這些對象存儲在會話中是一種很好的做法嗎? 編輯:我仍然可以使用緩存保存/訪問這些對象,考慮到他們持有用戶特定信息的事實? – user3036434
「我不認爲將這些對象存儲在會話中是一種很好的做法。」我避免使用Session,但取決於需求。在你的情況下,你可能不需要爲每個頁面加載所有人的數據 - 因此,你不應該使用Session或者擔心每個頁面需要調用少量數據。 –
「我仍然可以使用緩存保存/訪問這些對象,考慮到它們擁有用戶特定的信息?」如果它全部是用戶特定的數據,那麼緩存沒有多大用處(取決於當然用戶的數量)。 –