C# 使用枚举友好名称
我正在尝试以用户友好的可读名称使用enum 但我不知道如何将它与我的观点联系起来 这就是我到目前为止所做的:C# 使用枚举友好名称,c#,enums,asp.net-mvc-5,C#,Enums,Asp.net Mvc 5,我正在尝试以用户友好的可读名称使用enum 但我不知道如何将它与我的观点联系起来 这就是我到目前为止所做的: public enum MyDayOfWeek { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, SunTilFir = 7, } public class Course {
public enum MyDayOfWeek
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
SunTilFir = 7,
}
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public int Hour { get; set; }
public MyDayOfWeek Days { get; set; }
}
public static class ChangeEnumName
{
public static string EnumValue(this MyDayOfWeek e)
{
switch (e)
{
case MyDayOfWeek.SunTilFir:
return "Sunday until Friday ";
}
return "Horrible Failure!!";
}
}
如何将ChangeEnum名称绑定到我的视图?您可以在模型上创建一个只读属性,从中返回FriendlyName
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public int Hour { get; set; }
public MyDayOfWeek Days { get; set; }
public string DaysFriendlyName
{
get
{
switch(this.Days)
{
case MyDayOfWeek.SunTilFir:
return "Sunday until Friday ";
}
return "Horrible Failure!!";
}
}
}
最好不要在readonly属性的主体中实现这个开关,但是可以为它创建一个扩展方法?所以你的身体会像这样:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
以及扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
扩展方法的好处在于,您可以从razor视图中释放readonly属性并直接绑定到扩展方法(在razor视图中输入正确的“using”以使其生效)。您可以在模型上创建一个readonly属性,从中返回FriendlyName
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public int Hour { get; set; }
public MyDayOfWeek Days { get; set; }
public string DaysFriendlyName
{
get
{
switch(this.Days)
{
case MyDayOfWeek.SunTilFir:
return "Sunday until Friday ";
}
return "Horrible Failure!!";
}
}
}
最好不要在readonly属性的主体中实现这个开关,但是可以为它创建一个扩展方法?所以你的身体会像这样:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
以及扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
扩展方法的好处在于,您可以从razor视图中释放readonly属性并直接绑定到扩展方法(在razor视图中输入正确的“using”以使其生效)。您可以在模型上创建一个readonly属性,从中返回FriendlyName
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public int Hour { get; set; }
public MyDayOfWeek Days { get; set; }
public string DaysFriendlyName
{
get
{
switch(this.Days)
{
case MyDayOfWeek.SunTilFir:
return "Sunday until Friday ";
}
return "Horrible Failure!!";
}
}
}
最好不要在readonly属性的主体中实现这个开关,但是可以为它创建一个扩展方法?所以你的身体会像这样:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
以及扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
扩展方法的好处在于,您可以从razor视图中释放readonly属性并直接绑定到扩展方法(在razor视图中输入正确的“using”以使其生效)。您可以在模型上创建一个readonly属性,从中返回FriendlyName
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public int Hour { get; set; }
public MyDayOfWeek Days { get; set; }
public string DaysFriendlyName
{
get
{
switch(this.Days)
{
case MyDayOfWeek.SunTilFir:
return "Sunday until Friday ";
}
return "Horrible Failure!!";
}
}
}
最好不要在readonly属性的主体中实现这个开关,但是可以为它创建一个扩展方法?所以你的身体会像这样:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
以及扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
扩展方法的好处在于,您可以从razor视图中释放readonly属性并直接绑定到扩展方法(在razor视图中输入正确的“using”以使其工作)。您可以尝试这样做:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
因此,您可以在视图中将其用作扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
您可以尝试这样做:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
因此,您可以在视图中将其用作扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
您可以尝试这样做:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
因此,您可以在视图中将其用作扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
您可以尝试这样做:
public string DaysFriendlyName
{
get
{
return this.Days.ToFriendlyName();
}
}
public enum MyDayOfWeek
{
[UserFriendlyName("Sunday")]
Sunday = 0,
[UserFriendlyName("Monday")]
Monday = 1,
[UserFriendlyName("Tuesday")]
Tuesday = 2,
[UserFriendlyName("Wednesday")]
Wednesday = 3,
[UserFriendlyName("Thursday")]
Thursday = 4,
[UserFriendlyName("Friday")]
Friday = 5,
[UserFriendlyName("Saturday")]
Saturday = 6,
[UserFriendlyName("Sunday until Friday")]
SunTilFir = 7
}
public class UserFriendlyNameAttribute : Attribute
{
public string Text { get; set; }
public UserFriendlyNameAttribute(string text)
{
Text = text;
}
}
public static class EnumExtensions
{
public static string GetUserFriendlyName(this MyDayOfWeek myDayOfWeek)
{
return GetUserFriendlyNameAttributeText(typeof(MyDayOfWeek), myDayOfWeek.ToString());
}
private static string GetUserFriendlyNameAttributeText(this Type type, string memberName)
{
var memInfo = type.GetMember(memberName);
if (memInfo.Length == 0)
return string.Empty;
var attributes = memInfo[0].GetCustomAttributes(typeof(UserFriendlyNameAttribute), false);
if (attributes.Length == 0)
return null;
return ((UserFriendlyNameAttribute) attributes[0]).Text;
}
}
因此,您可以在视图中将其用作扩展方法:
namespace UniPro.Models
{
public static class DaysEnumExtensions
{
public static string ToFriendlyName(this MyDayOfWeek days)
{
switch (days)
{
//....
}
}
}
}
MyDayOfWeek.SunTilFir.GetUserFriendlyName()
看起来您正在尝试为枚举类型创建扩展方法。我认为这在C#中是无效的。怎么做?使用enum的友好名称?使用位值并创建一个值
工作日
,该值可以写为星期一|星期二|星期三|星期四|星期五
或星期六和星期日
?虽然我不能说,但我确定您正在尝试做什么。您介意使用资源字符串将枚举值字符串用作查找键吗?您面临什么问题?看起来您正在尝试为枚举类型创建扩展方法。我认为这在C#中是无效的。怎么做?使用enum的友好名称?使用位值并创建一个值工作日
,该值可以写为星期一|星期二|星期三|星期四|星期五
或星期六和星期日
?虽然我不能说,但我确定您正在尝试做什么。您介意使用资源字符串将枚举值字符串用作查找键吗?您面临什么问题?看起来您正在尝试为枚举类型创建扩展方法。我认为这在C#中是无效的。怎么做?使用enum的友好名称?使用位值并创建一个值工作日
,该值可以写为星期一|星期二|星期三|星期四|星期五
或星期六和星期日
?虽然我不能说,但我确定您正在尝试做什么。您介意使用资源字符串将枚举值字符串用作查找键吗?您面临什么问题?看起来您正在尝试为枚举类型创建扩展方法。我认为这在C#中是无效的。怎么做?使用enum的友好名称?使用位值并创建一个值工作日
,该值可以写为星期一|星期二|星期三|星期四|星期五
或星期六和星期日
?虽然我不能说,但我确定您正在尝试做什么。您介意使用资源字符串将枚举值字符串用作查找键吗?您面临什么问题?我应该为“@using”使用什么命名空间?只需为DaysEnumExtensions
类添加using即可。请注意,扩展方法不能与DisplayFor之类的controltemplates一起使用。在这种情况下,您将需要只读property@usingUniPro.Models.DaysEnumExtensions我收到以下错误:using namespace指令只能应用于名称空间;'UniPro.Models.DaysEnumExtensions是一种类型而不是名称空间,所以您的名称空间是UniPro.Models?那么使用应该是@using UniPro.Models。请参阅帖子中的我的编辑。我应该为“@Using”使用什么名称空间?只需为DaysEnumExtensions
类添加Using即可。请注意,扩展方法不能与DisplayFor之类的controltemplates一起使用。在这种情况下,您将需要只读property@usingUniPro.Models.DaysEnumExtensions我收到以下错误:using namespace指令只能应用于名称空间;'UniPro.Models.DaysEnumExtensions是一种类型而不是名称空间,所以您的名称空间是UniPro.Models?那么使用应该是@using UniPro.Models。请参阅文章中的我的编辑。我应该为“@Using”使用什么名称空间?只需添加usin即可