2015-02-23 24 views
1

在我們的項目中,我們使用了大量的用戶控件。他們都不支持AJAX。我們使用UpdatePanel進行局部頁面渲染。控件沒有適當的客戶端功能。最佳學習資源如何創建啓用AJAX的用戶控件

我用來在ascx頁面本身創建正常的JS函數。我想這不是將客戶端功能添加到用戶控件的標準方式。但是,我可以實現我所需要的所有事情,而無需使用任何此類標準。但是考慮到可維護性時,這是很難&難以使更改&不可擴展。

所以我想學習正確的方法來創建AJAX的用戶控件。就像Telerik &其他第三方控件創建用戶控件一樣。 Microsoft推薦的方法是什麼?

回答

0

你能更具體地瞭解更新面板的問題嗎?

要使用內置的AJAX, 1.你需要一個ScriptManager 2.把所有必要的控制更新面板內

由於您使用的用戶控件,它能夠更好地在主要頁面中添加的ScriptManager在用戶控制被添加。否則,它可能會給出一個錯誤,說明找到了多個ScriptManager。

+0

嗨Nidhin,我也不是很舒服的更新面板,它需要一個回傳進不去。儘管它是部分回發,但它貫穿整個頁面生命週期的幕後。 – 2015-02-23 09:51:13

+0

您是否在使用按鈕發送數據?只要確保所有的控件都在更新面板 – 2015-02-23 09:53:22

+0

Nidhin內,請參閱下面的acarter評論。我期待着那樣的事情。 – 2015-02-23 10:54:50

0

UpdatePanel使用AJAX並且易於使用,但是,如果您想要真正的客戶端控件,即只需要在需要時調用服務器,那麼最好還是在別處尋找。

如果你想編寫你自己的控件,我建議閱讀一些JavaScript設計模式,特別是模塊模式。如果你有不錯的JavaScript技能,使用jQuery創建控件是非常容易的 - 也可以使它成爲一個jQuery插件。您可能需要查看一些客戶端MVC/MVVM框架(如AngularJS或Knockout)可能已足夠,因爲至少他們會幫助您處理數據綁定,因此在客戶端管理數據並將其恢復爲服務器。

但是,除非你正在做一些之前沒有人做過的事,爲什麼不使用Telerik或DevExpress的一些現有控件?模塊模式的

例(有一堆不同的方式做模塊模式,這僅僅是一個):

var myModule = { 
    /* PROPERTIES */ 
    prop1: 'sdfsdf', 
    prop2: 123, 

    /* FUNCTIONS */ 
    func1: function() { 
     alert('!!!'); 
    } 
} 

/* example use of module */ 
alert(myModule.prop1); 
myModule.func1(); 

你還需要有JavaScript事件有很好的理解。例如,如果你想創建一個客戶端網格(已有數百萬免費),你需要處理點擊和文本改變的事件類型。即處理分頁,排序,過濾和任何其他你可能想要的功能。

編輯:剛剛創建了一個基本的JSFiddle,爲您提供了一個使用jQuery插件的基本客戶端控件示例。它並不完美,但如果你想嘗試製作自己的控件,它可能會讓你知道從哪裏開始。

http://jsfiddle.net/pwqmenwx/1/