簡體   English   中英

將字典枚舉鍵作為命名值呈現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM