Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC如何在显示窗体中正确显示本地化的枚举?_C#_Asp.net Mvc_Localization_Enums - Fatal编程技术网

C# MVC如何在显示窗体中正确显示本地化的枚举?

C# MVC如何在显示窗体中正确显示本地化的枚举?,c#,asp.net-mvc,localization,enums,C#,Asp.net Mvc,Localization,Enums,我有一个关于枚举的问题,基本上我已经创建了一个本地化的枚举下拉列表来正确显示带有本地化的枚举 但是,当我想稍后在另一个页面上的某个地方显示所选枚举时,我不再获得本地化 任何想法,或者任何人都可以给我一个链接,指向一些用于显示枚举的html扩展 我有以下资料: public enum Gender { [Display(ResourceType = typeof(Resources.Base), Name = "Male")] M= 0, [Disp

我有一个关于枚举的问题,基本上我已经创建了一个本地化的枚举下拉列表来正确显示带有本地化的枚举

但是,当我想稍后在另一个页面上的某个地方显示所选枚举时,我不再获得本地化

任何想法,或者任何人都可以给我一个链接,指向一些用于显示枚举的html扩展

我有以下资料:

public enum Gender
{
        [Display(ResourceType = typeof(Resources.Base), Name = "Male")]
        M= 0,
        [Display(ResourceType = typeof(Resources.Base), Name = "Female")]
        F= 1,
}
@Html.LabelForModel(Model.Gender.ToString())
我认为有以下几点:

public enum Gender
{
        [Display(ResourceType = typeof(Resources.Base), Name = "Male")]
        M= 0,
        [Display(ResourceType = typeof(Resources.Base), Name = "Female")]
        F= 1,
}
@Html.LabelForModel(Model.Gender.ToString())
在我设置的控制器中:

Model.Gender = Gender.M
我没有从底部显示雄性,而是显示“M”


您知道如何解决这个问题吗?

您应该在视图中使用以下代码:

@Html.LabelFor(m => m.Gender)

因为
Display
属性使用by
LabelFor
方法来显示您的值。
ToString
只是将您的枚举值转换为字符串。它没有关于您的属性的任何信息。

您应该在视图中使用此代码:

@Html.LabelFor(m => m.Gender)

因为
Display
属性使用by
LabelFor
方法来显示您的值。
ToString
只是将您的枚举值转换为字符串。它没有任何关于属性的信息。

最后我自己解决了问题,我创建了一个自定义html帮助程序来正确显示“显示”注释

    public static MvcHtmlString DisplayEnum(this HtmlHelper helper, Enum e)
    {
        string result = string.Empty;

        var display = e.GetType()
                   .GetMember(e.ToString()).First()
                   .GetCustomAttributes(false)
                   .OfType<DisplayAttribute>()
                   .LastOrDefault();

        if (display != null)
        {
            result = display.GetName();
        }

        return helper.Label(result);
    }
public static MvcHtmlString DisplayEnum(此HtmlHelper帮助程序,枚举e)
{
字符串结果=string.Empty;
var display=e.GetType()
.GetMember(例如ToString()).First()
.GetCustomAttributes(false)
第()类
.LastOrDefault();
如果(显示!=null)
{
结果=display.GetName();
}
返回helper.Label(结果);
}

最后我自己解决了这个问题,我创建了一个自定义html帮助程序来正确显示“display”注释

    public static MvcHtmlString DisplayEnum(this HtmlHelper helper, Enum e)
    {
        string result = string.Empty;

        var display = e.GetType()
                   .GetMember(e.ToString()).First()
                   .GetCustomAttributes(false)
                   .OfType<DisplayAttribute>()
                   .LastOrDefault();

        if (display != null)
        {
            result = display.GetName();
        }

        return helper.Label(result);
    }
public static MvcHtmlString DisplayEnum(此HtmlHelper帮助程序,枚举e)
{
字符串结果=string.Empty;
var display=e.GetType()
.GetMember(例如ToString()).First()
.GetCustomAttributes(false)
第()类
.LastOrDefault();
如果(显示!=null)
{
结果=display.GetName();
}
返回helper.Label(结果);
}

现在,我得到的不是M,而是性别,但我需要看到“男性”或本地化版本。现在,我得到的不是M,而是性别,但我需要看到“男性”“或itI的本地化版本我还在,寻找答案,如果有人能…?我还在,寻找答案,如果有人能…?你知道名字,但我认为你没有这个名字的资源,是吗?@deadManN读了你的名字,但我认为你没有这个名字的资源,是吗?@deadManN读了