关于MVC5中enum类型的属性,使用display显示自定义名称的问题
publicenumSexType{[Display(Name="男")]nan=1,[Display(Name="女")]nv=2}publicclassStudent...
public enum SexType
{
[Display(Name = "男")]
nan= 1,
[Display(Name = "女")]
nv= 2
}
public class Student
{
public SexType SexType{get;set;}
}
//编辑页面,使用 @Html.EnumDropDownFor() 显示的下拉框中是中文“男”、”女“
但是在显示页,使用@Html.DisplayFor() 只能显示 nan,nv。 上面的注解不显示。 展开
{
[Display(Name = "男")]
nan= 1,
[Display(Name = "女")]
nv= 2
}
public class Student
{
public SexType SexType{get;set;}
}
//编辑页面,使用 @Html.EnumDropDownFor() 显示的下拉框中是中文“男”、”女“
但是在显示页,使用@Html.DisplayFor() 只能显示 nan,nv。 上面的注解不显示。 展开
3个回答
展开全部
百度搜索"Dealing with Enum in MVC 5.1"
codeproject那个网站的答案就是你想要的,讲得非常详细。
我来概括一下:
关键点就是要建立DisplayTemplates,路径:Views /Shared/DisplayTemplates/enum.cshtml
enum.cshtml是分部视图。
enum.cshtml代码:
@model Enum
@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
// Display Enum using same names (from [Display] attributes) as in editors
string displayName = null;
foreach (SelectListItem item in EnumHelper.GetSelectList(ViewData.ModelMetadata, (Enum)Model))
{
if (item.Selected)
{
displayName = item.Text ?? item.Value;
}
}
// Handle the unexpected case that nothing is selected
if (String.IsNullOrEmpty(displayName))
{
if (Model == null)
{
displayName = String.Empty;
}
else
{
displayName = Model.ToString();
}
}
@Html.DisplayTextFor(model => displayName)
}
else
{
// This Enum type is not supported. Fall back to the text.
@Html.DisplayTextFor(model => model)
}
不明白继续追问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询