2010-08-28 72 views
2

我想了解AJAX的東西如何在引擎蓋下工作。假設我有一個帶有按鈕的asp.net表單。然後我有一個單一列DateTime的數據庫。當我點擊asp.net表單上的按鈕時,我想用當前時間在數據庫中插入一列。Asychnronous消息發送Asp.net

我有一個C#事件處理程序:

protected void btnButton_OnClick(Eventargs e, object sender) 
{ 
    //insert DateTime.now into DB 
    //This part is easy 
} 

我想這樣的形式本身發生是有點擊該按鈕不會重新加載形式。它只會向服務器發送消息;沒有理由重新加載頁面。有什麼方法可以實現這個目標?

  1. 我已經研究過的AJAX框架一點點,似乎這樣可以更新面板內完成,但頁面仍然會重新加載,這純粹是用戶少noticable。

  2. 在javascript中使用__doPostBack調用。我不知道這是如何工作的。

+1

當然你的意思是插入*行*,而不是列,對不對? – Tahbaza 2010-08-28 04:23:52

回答

2

這聽起來像你偏愛微軟提供的JavaScript庫,這很好。 UpdatePanel等有它們的位置,但我發現當你需要做一些非常簡單和直接的事情時,比如你所描述的,它更簡單,更清潔,直接調用Javascript中的服務器資源來完成它。

有很多方法可以做到這一點,但我喜歡使用jquery的$ .ajax()方法來調用webservice方法(或最近的MVC操作)。如果你願意檢查一些稍微不同的技術,這裏是一個blog post,它會讓你體會我在說什麼。

1

ASP.NET AJAX有2個主要部分組成:

  • 服務器端控件基於
  • 客戶端架構(被稱爲微軟的Ajax

隨着首先你會選擇使用UpdatePanel控件。然而,這種方式仍然會像整個視圖狀態那樣通過線路發送大量不需要的數據,您的頁面幾乎像整個頁面生命週期一樣正常回發。大多數情況下,我建議不要在生產代碼中使用它。

第二部分是基於純JavaScript的ajax庫,並帶有一點微軟醬汁。它與pageLoad函數等頁面生命週期具有相似性,並且很容易學習。

__doPostBack

,當你把你的網頁就像一個LinkBut​​ton控件上的某些服務器控件的功能被插入。你可以直接從javascript調用它,但知道它會導致整個頁面回發到服務器,所以如果你想避免這種情況,不要走這條路。

在過去的兩年中,我已經成爲jQuery的忠實粉絲,它與ASP.NET和ASP.NET MVC一起工作得非常好。

我建議你閱讀這篇精美的文章,以獲得更多關於它的信息:Using jQuery with ASP.NET Part 2: Making an AJAX Callback to ASP.NET
jQuery本身也被微軟採納和青睞。我強烈建議你看看它和它的力量。