Discuz NT控制項剖析 之 Button

2021-04-15 00:11:46 字數 2061 閱讀 9408

在開源之後,還沒什麼文章來說明 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採用了如下的...