0
我在我的類中有一個屬性,我可以將其設置爲一個枚舉值,該枚舉具有flag屬性。我想在我的視圖中顯示枚舉的顯示名稱,它在我將Person.Types
設置爲單個值時起作用,但當它設置爲多個值時不起作用。Enum Flag獲取多個顯示名稱
[Flags]
public enum TypesEnum
{
[Display(Name = "Lärare")]
Teacher = 1,
[Display(Name = "Student")]
Student = 2
}
public class Person
{
public string Name { get; set; }
public TypesEnum Types { get; set; }
}
person.Types = TypesEnum.Teacher | TypesEnum.Student;
var model = db.Persons
.Where(x => x.Types.HasFlag(TypesEnum.Teacher))
.ToList();
我已經使用此輔助方法來獲取DisplayNameAttribute當人只有一種類型。但是,當一個人有兩個(如教師和學生),我得到一個InvalidOperationException: Sequence contains no elements
上enumValue.GetType()
public static string GetDisplayName(this Enum enumValue)
{
return enumValue.GetType()
.GetMember(enumValue.ToString())
.First()
.GetCustomAttribute<DisplayAttribute>()
.GetName();
}
然後在Razor視圖:
@foreach (var person in Model)
{
<h3>@person.Name<h3>
<p>@person.Types</p>
}
我有什麼期望從person.Types.GetDisplayName()
的輸出「Lärare,學生「而不是」老師,學生「,我只從person.Types
得到。 我正在使用.NET Core。
http://stackoverflow.com/questions/13099834/how-to-get-the-display-name-attribute-of- an-enum-member-via-mvc-razor-code – Ashiquzzaman
@Ashiquzzaman不僅僅只在你只有一個值時纔給出顯示名?如果您查看評論和我的帖子,我已經在使用關於該主題的推薦人推薦。 – Rob