2014-04-25 48 views
0

我開始使用ASP.NET MVC創建一個新項目,並且我必須使用ExtJS作爲小部件庫(我們不打算在客戶端中執行MVC),因爲公司已經擁有它的許可證。如何將Ext JS控件與ASP.NET MVC綁定?

我們有一個不好的經驗,將ExtJS綁定到MVC從以前的項目中生成的HTML。我們通常做的是隱藏MVC <input>等,根據它們的屬性生成ExtJS控件,並同步這兩個值。這很難維護,而且在代碼中看起來很醜。

我想要的是,ExtJS控件將直接從ASP.NET生成的HTML中獲取它們的值,並且能夠以MVC將理解的方式將它們提交給控制器,並且能夠反序列化爲模型對象。

我還喜歡使用jQuery驗證,它與ASP.NET MVC集成,而不是ExtJS驗證。 ExtJS控件有可能嗎?

謝謝。

回答

0

那麼,因爲沒有人回答,我會概述我最終做了什麼。

  1. 在每個輸入上添加一個data-ext-type屬性,該屬性標記將其轉換爲何種類型的ExtJS控件。
  2. 使用jQuery,發現所有的輸入的形式
  3. 對於每個輸入:
    1. var container = $(input).replaceWith("<div style='display: inline;'></div>");
    2. 創建基於數據-EXT型ExtJS的控制,設定它的值到input.value,它的inputId爲input.id,其名稱爲input.name。您還可以將源輸入的其他屬性轉換爲ExtJS配置項目。尤其是,您必須將所有MVC生成的data-val- *屬性複製到ExtJS的inputAttrTpl配置中,方法是循環訪問input.attributes數組。
    3. 使用renderTo config或.render()函數將控件渲染到您在循環的第1步中創建的containter

組合框有其自身的挑戰,因爲要驗證它的實際價值是在剛剛可見輸入上面的隱藏字段。 Html Editor也是一樣,但我們不使用它。