沒有什麼,開發ASP.NET時隨便寫寫,想到什麼寫什麼
沒有什麼,開發ASP.NET時隨便寫寫,想到什麼寫什麼,這次想寫點開發過程中,比如在資料庫,某一張表中有一個欄位,如下:
上面程式碼示例中高亮欄位,資料型別為BIT,它儲存的值將為"True"或"False"。
在前端aspx網頁上,我們用一個形式來呈現友好的控制元件。一般來說,儲存boolean值,一般使用CheckBox控制元件,選中得到為True,反之得到為False,這個是較理想的。但是現這裡是要呈現性別,男或女。那就不能使用CheckBox控制元件了。最接近此要求,也許是RadioButtonList控制元件了。
我們在程式中,設定幾個資料集,作為RadioButtonList 的資料來源:
上面的Key使用int資料型別。
上面的key使用布林資料型別。
上面的key使用string資料型別。其實還可以定義其它,這不是重要,但要理解其含義,為什麼這樣要這樣定義,目的是什麼。
下面我們實現aspx的功能,也許有些網友會直接如下寫法:
這樣死寫法根本無需準備什麼資料來源。Insus.NET在想,這樣做也沒有什麼問題。因為它這樣確實可以的。看開發者開發時的想法與思維了。不過按照Insus.NET的習慣,資料呈現與程式封裝,還是在cs程式中對RadioButtonList進行資料來源繫結。如果後臺繫結資料來源,在aspx網頁只會拉一個RadioButtonList控制元件即可。
看.aspx.cs的
上面程式碼是完全沒有問題,或許你就是這樣寫的。但是Insus.NET並不會這樣做,不想把任何在需要在Page_Load()事件執行的程式碼放在Page_Load()方法內。理想的實現,是另寫一個私有方法:
在網頁瀏覽時,看到的效果:
OK,上面只是一些曾通的RadioButtonList的資料來源繫結。假如在資料來源繫結時,還要根據資料,男或女把RadioButtonList的選擇選中狀態。
但是,偏偏在你寫程式時,你會遇上是根據值去設定,它是以0或是1來判斷,那我們怎樣來實現了呢? 這樣情況之下,需要修改一下程式:
上面瀏覽網頁時,看到的效果,如下:
寫到這裡,我們會想起,真正開發時,我們是不知什麼情況之下是傳入Text,什麼情況之下傳入的是Value。嗯,我們就應該考慮到這些情形。下面Insus.NET的解決方法:
寫兩個私有方法,並過載。是Byvalue和ByText的。這樣在引用它們時,只是傳入是值或是文字即可。此時能把這個功能實現這樣,也許覺得很完美。但是某一情況之下,如你是使用DropDownList去呈現一些資料。上面的方法似乎有相似之處,但是完全不能拿來使用。只完另外再寫兩個方法:
對吧。我們會不禁住地問,是否有一個萬全之策? 解決這個問題,我們應該想到,不管是RadioButtonList還是DropDownList控制元件,均是繼承ListControl類,如果想到這點,我們就可以把這四個私有方法,寫成兩個通用的:
呵呵,此時不管你是傳入DropDownList還是RadioButtonList均沒有問題,是吧。
平時,Insus.NET開發時,連引數也不想傳入過多。是否可以做到? 如:
void SetSelectedByDataValueField(string byValue)
在較高一些C#版本,是可以解決此問題的。使用擴充套件方法:
那在引用時,就可以只傳入一個引數:
上面一系列的動作,是解決RadioButtonList設定Selected的狀態。
在物件導向以及三層開發過程中,Insus.NET基本上沒有在程式中寫SQL語句來存與取同資料庫進行溝通。我們會在程式編寫一個類,如:
上面的類別,只寫一個property。因此這篇博文中,重點是說它。
使用者在前臺資料呈現中,作出選擇,需要把選擇的結果存回至資料表中,看一下語法
由於我們寫property時,定義的資料型別為布林(bool)。上面寫的
objMember.Sex = this.RadioButtonListSex.SelectedItem.Value;
一個是得到string,一個需要bool。因此需要處理一下資料型別,才能糾正錯誤:
上面程式碼示例中,是把選擇的值轉換為布林值。
由於開發一開始時,就為RadioButtonList控制元件設定了兩個值,0與1。因此我們可以對上面的程式碼稍改一下:
拿掉高亮的程式碼,由於我們在Switch之前,已經定義好一個私有變數:
bool sex = true;
這樣不管使用者選擇了男還是女,程式在跑Switch時,只有case是0時,才會去轉換型別,對吧。既然是這樣,我們又可以把這資料型別轉換的寫成:
呵呵,隨便寫寫,望網友能看得懂。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3349/viewspace-2812082/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSON是什麼,有什麼用,怎麼寫jsonJSON
- 為什麼要寫作
- 自媒體文章怎麼寫?寫自媒體文章有什麼技巧?
- 實時熱點爆文怎麼寫?有什麼創作套路?
- 為什麼重寫equals必須重寫hashCode
- 隨便寫
- 有什麼適合做填寫的報表工具?
- 我為什麼冒險寫QuarkAdmin!
- [譯]為什麼要寫 super(props)
- 為什麼 SQLite 用 C 編寫?SQLite
- Dubbo為什麼要用Go重寫?Go
- 為什麼我不贊成開發來寫檢視
- 什麼是網路爬蟲?為什麼用Python寫爬蟲?爬蟲Python
- 為什麼在vue中寫的css都沒法生效VueCSS
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- 為什麼寫《Tomcat核心設計剖析》Tomcat
- 我們為什麼要用英文寫文件?
- 【瞎寫】熊是什麼顏色的?
- 寫作為什麼要使用Scrivener for MacMac
- python程式註釋寫在什麼位置Python
- linux用什麼編輯器寫python?LinuxPython
- [隨便寫寫] 開始寫一些東西了
- python爬蟲是什麼?為什麼用python語言寫爬蟲?Python爬蟲
- Python為什麼叫爬蟲?Python為什麼適合寫爬蟲?Python爬蟲
- 為什麼我寫了路由懶載入但程式碼卻沒有分割?路由
- 為什麼有了併發安全的集合還需要讀寫鎖?
- Node之CommonJS,為什麼模組該這麼寫JS
- 自媒體百萬級爆文怎麼寫?有什麼創作技巧?
- 自媒體爆款標題怎麼寫?有什麼創作技巧?
- 我為什麼開始寫技術公眾號
- React16時代,該用什麼姿勢寫 React ?React
- 新時代程式設計師都用什麼寫程式碼?程式設計師
- 為什麼使用Scrapy框架來寫爬蟲?框架爬蟲
- 老猿為什麼寫Python爬蟲教程Python爬蟲
- 為什麼if中null要寫在前面?Null
- [譯]我們為什麼要寫 super(props)?
- 我們為什麼要技術寫作
- Tobias Koppers:我當初為什麼寫webpackWeb