最近公司在開發財務系統,在工做中遇到很多的地方須要下拉框。ide
可是枚舉框中數據的內容又來自枚舉。ui
枚舉代碼以下:spa
1 public class EnumDemo 2 { 3 4 public enum Value { 5 First=1, 6 Second=2 7 } 8 public enum Name 9 { 10 我是第一 = 1, 11 我是第二 = 2 12 } 13 14 15 16 }
我一看還挺簡單。code
因而第一次是這樣的:orm
1 <select> 2 <option value="1">我是第一</option> 3 <option value="2">我是第一</option> 4 </select>
效果是出來了,可是這樣的話,若是有七八個枚舉,每一個枚舉有七八個值,個人手還不寫廢掉嗎。blog
因而第二次頁面代碼以下:開發
1 <select> 2 @foreach (var item in Enum.GetValues(typeof(EnumDemo.Value))) 3 { 4 <option value="@((int)item)"> 5 @((EnumDemo.Name)item) 6 </option> 7 8 } 9 10 </select>
看效果:博客
解釋一下,這裏typeof看不懂不要緊,知道這個typeof的結果是Type就行了, 正好Enum.GetValues()須要Type類型參數。看下圖的提示string
後面感受這樣用起來也麻煩(我的有點懶吧),因而想到能夠這樣:it
新建了一個幫助類:
1 public static string CreatSelection<TValue,TName>() 2 { 3 4 StringBuilder stringBuilder = new StringBuilder(); 5 6 foreach (var item in System.Enum.GetValues(typeof(TValue))) 7 { 8 stringBuilder.AppendFormat("<option value='{0}'>{1}</option>", (TName)item, (int)item); 9 } 10 return stringBuilder.ToString(); 11 12 }
而後頁面代碼以下:
1 <select> 2 @( Html.Raw( WorkRecord.Enum.EnumHelper.CreatSelection<EnumDemo.Value,EnumDemo.Name>() ) ) 3 </select>
效果以下:
雖然效果都是同樣的,可是你寫起來的感受絕對不同。
剛剛畢業的新手,若是大佬們能給些更好的意見,歡迎留言,謝謝!
也歡迎不懂的童鞋問我,加班晚上不在,不加班隨機在線,看見必定會回覆的!
本人也是剛剛畢業的學生,第一次寫博客,也不太懂規矩,講得也不太清楚,望見諒!
文章僅以此獻給不懂的同窗,與君共勉。