[英]Render Dictionary Enum keys as named values
我有一個枚舉看起來像這樣:
public Enum MyEnum {EnumA = 0, EnumB = 10, EnumC = 20}
我還希望在Razor視圖中使用一個Dictionary模型,在該模型中,我想將Dictionary的鍵分配給如下所示的javascript數組:
var myArray = @Html.Raw(Json.Encode(Model.Keys.ToArray()))
這導致myArray = [0,10,20]
與我想要的非常接近。 我希望添加枚舉的“文本”值而不是數值,例如: myArray = ["EnumA","EnumB","EnumC"]
顯示單個枚舉字段時, @Html.DisplayFor
可用於將數值轉換為枚舉“文本”值。
有沒有一種方法可以使我的鍵以相同的方式轉換而不必遍歷它們並將它們手動添加到數組中?
您可以嘗試以下方法:
var values = Model.Keys.ToArray().Select(val => val.ToString());
var myArray = @Html.Raw(Json.Encode(values));
如果鍵仍為MyEnum
類型, MyEnum
將它們自動表示為枚舉值的名稱。
如果那不起作用,您也可以嘗試以下操作:
var values = Model.Keys.ToArray().Select(val => ((MyEnum)val).ToString());
var myArray = @Html.Raw(Json.Encode(values));
這假定如果您的鍵仍不是MyEnum
類型,則它們至少是整數。
請注意,如果鍵中的值與定義的MyEnum
值不對應(例如,如果您定義的值1-4並且鍵為17),您仍將獲得鍵值作為數字字符串。
您可以使用Enum.Parse
;
var array = new List<int> {0, 10, 20};
var arrayEnum = array.Select(x => Enum.Parse(typeof(MyEnum), x.ToString())).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.