最近公司在開發財務系統,在工作中遇到不少的地方需要下拉框。 但是枚舉框中數據的內容又來自枚舉。 枚舉代碼如下: 1 public class EnumDemo 2 { 3 4 public enum Value { 5 First=1, 6 Second=2 7 } 8 public enum Na ...
最近公司在開發財務系統,在工作中遇到不少的地方需要下拉框。
但是枚舉框中數據的內容又來自枚舉。
枚舉代碼如下:
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 }View Code
我一看還挺簡單。
於是第一次是這樣的:
1 <select> 2 <option value="1">我是第一</option> 3 <option value="2">我是第一</option> 4 </select>View Code
效果是出來了,但是這樣的話,如果有七八個枚舉,每個枚舉有七八個值,我的手還不寫廢掉嗎。
於是第二次頁面代碼如下:
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>View Code
看效果:
解釋一下,這裡typeof看不懂沒關係,知道這個typeof的結果是Type就好了, 正好Enum.GetValues()需要Type類型參數。看下圖的提示
後面感覺這樣用起來也麻煩(個人有點懶吧),於是想到可以這樣:
新建了一個幫助類:
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 }View Code
然後頁面代碼如下:
1 <select> 2 @( Html.Raw( WorkRecord.Enum.EnumHelper.CreatSelection<EnumDemo.Value,EnumDemo.Name>() ) ) 3 </select>View Code
效果如下:
雖然效果都是一樣的,但是你寫起來的感覺絕對不一樣。
剛剛畢業的新手,如果大佬們能給些更好的意見,歡迎留言,謝謝!
也歡迎不懂的童鞋問我,加班晚上不在,不加班隨機線上,看見一定會回覆的!
本人也是剛剛畢業的學生,第一次寫博客,也不太懂規矩,講得也不太清楚,望見諒!
文章僅以此獻給不懂的同學,與君共勉。