2008-10-17 58 views
3

實現需要AJAX回調的用戶控件的最佳方式是什麼?在ASP.NET用戶控件中使用AJAX回調

我要完成的幾件事情:

  • 在瀏覽器中完成的事件(例如,拖放)觸發AJAX通知可以提高控制事件,使用它會導致頁面上的代碼控制做它需要做的事情(例如,改變數據庫中的值)。
  • 部分更新(不使用更新面板),可以執行諸如在文本框下方填充自動完成下拉菜單等操作。
  • 實行單一用戶控件是通用在幾個頁面上被重用
  • 避免執行該傳遞活動回到控制頁面本身的邏輯,因爲這是重複和難以維持

我對大多數客戶端的東西使用jQuery,但對於實際的AJAX調用,我並不在乎它是jQuery還是ASP AJAX庫。

有效的是,用戶控件上的PageMethods是完美的,它很容易從客戶端腳本調用。不幸的是,據我所知,pagemethods不適用於用戶控件。


我會使用自動完成控制爲例:

我應該能夠把頁面上的自動完成控件,然後在網頁代碼,例如:

Public Sub HandleLookup(ByVal input As String, ByRef list As List(Of String) Handles MyControl.LookupEntries 
    list = New List(Of String) 
    ' Query database for list of items.. 
    For Each item as String in FullItemList 
    If item.StartsWith(input) then list.Add(item) 
    Next 
    Return list 
End Sub 

而且別無其他..代碼的其餘部分應該在usercontrol中。


請注意,我試圖製作的控件比例如自動完成更具體。它們不存在於任何第三方庫中,我真的需要能夠自己製作它們。

回答

2

研究在您的頁面中實現ICallbackEventHandler - 這是一種簡單的方法,可以通過JavaScript調用回頁面功能。

這裏有一個很好的教程:

http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=119

+0

謝謝,讓我去。它不是那麼直觀或強大的(真的只允許一個參數(字符串)) - 這意味着我必須編寫一個小庫來對字符串進行編碼/解碼,並讓我模擬多個「函數」。但它確實有效,現在所有東西都在一個控件中獨立存在 – gregmac 2008-10-21 05:22:53