关于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。 上面的注解不显示。
展开
 我来答
百度网友74c7673
2017-11-14
知道答主
回答量:7
采纳率:0%
帮助的人:6.3万
展开全部

参考老外:Shahriar Hossain

百度搜索"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)
}

不明白继续追问。

fej121121
2014-11-12 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:530万
展开全部
public enum SexType
{
男,

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SF手游fTa6O
2014-11-12 · TA获得超过145个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:70.2万
展开全部
enum定义的是枚举,你基础不太好,查查枚举的用法你就不会这么问了
追问
呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式