在開源之後,還沒什麼文章來說明 discuz!nt專案的一些特點。作為這個控制項庫的設計者,本人
將在接下來的時間裡用**的方式來向大家解釋其中一些控制項的設計思想,實現功能以及一些未曾
使用過的功能展示(因為管理後台只使用控制項的部分功能)。同時因為這組控制項開發的週期很短(當
時僅用乙個半月,後不斷增強功能),有不少思路和控制項設計的規範相駁,但當時只考慮為後台程式
開發和訂製方便,因此就暫且開發成了這個樣子,但本人日後會不斷完善和規範這些**:)
好了,今天就先說一下 button 控制項。
開發動機:在去年10月底時,後台ui進行了一次重構,因為對.net 中的button控制項和按鈕
控制項感到控制不靈活(專案需要乙個既有text 屬性,又有img欄位屬性的按鈕)。在看到了cs專案中
所使用的按鈕後,決定嘗試實現與其類似的功能設計。另外因為當時設計部無法對我們直接進行支援,
所以決定樣式(css)直接採用cs中所使用的樣式(偷個賴)。
1 properytybuttontypemode 按鈕樣式#region properytybuttontypemode 按鈕樣式
2 public enum buttontype
3 89
10 public buttontype buttontypemode
11
17 set
18
21 }
22 #endregion
2324
而指令碼註冊屬性為string ,用於輸入和儲存相關指令碼資訊
1 [description("圖版按鈕鏈結"), defaultvalue("../images/")]
2 public string scriptcontent
3
9 set
10
13 }
14是否支援客戶端表單驗證的屬性如下:
1 定義是否呼叫js函式validate(this.form);進行資料校驗#region 定義是否呼叫js函式validate(this.form);進行資料校驗
2 private bool _validateform = false;
3 //定義是否呼叫js函式validate(this.form);進行資料校驗
4 public bool validateform
5
10 get
11
14 }
15 #endregion
16有了這幾個屬性,就可以在控制項的render函式中使用相關的設定了
接下來是做伺服器端事件的繫結處理,
1 protected static readonly object eventclick = new object();
23 public event eventhandler click
4
9 remove
10
13 }
1415 protected virtual void onclick(eventargs e)
16
22 }
2324
25 public void raisepostbackevent(string eventargument)
26
2930
31 void ipostbackeventhandler.raisepostbackevent(string eventargument)
32
3536
未來實現的功能,應該說主要還是在ui表現上,希望能讓使用者的接受起來更快,色調也更加柔和等等......
Discuz NT借鑑學習之 自定義控制項剖析
自定義控制項需要定義乙個直接或間接從 control 類派生的類,並重寫 render 方法。在 net 框架中,system.web.ui.control 與system.web.ui.webcontrols.webcontrol 兩個類是伺服器控制項的基類,並且定義了所有伺服器控制項共有的屬性 ...
Elasticsearch之批量操作bulk
1 bulk相當於資料庫裡的bash操作。2 引入批量操作bulk,提高工作效率,你想啊,一批一批新增與一條一條新增,誰快?3 bulk api可以幫助我們同時執行多個請求 4 bulk的格式 action index create update delete metadata index,type...
親密接觸Discuz!NT之架構篇
慮到使用者的實際應用需求和面向未來的軟體開發理念,discuz nt在設計和開發之初就構建了優良的架構,大大提高了軟體的伸縮性 可擴充套件性和重用性。本架構除了使discuz nt自身結構更為清晰和更易於維護以外,也為使用者進行二次開發和完善論壇個性化提供了極大的方便。discuz nt採用了如下的...