EnumDropDownList用于本地化resx值排序

时间:2019-03-11 16:38:48

标签: razor enumdropdownlistfor

我是剃刀MVC和MVC的新手。我有一个EnumDropDownListFor以适当的语言显示国家。我需要的是根据不同的本地化resx值以alpha顺序排序的下拉列表。

在我的cshtml中,我有:

<div>@Html.LabelFor(m => m.Country)</div>
@Html.EnumDropDownListFor(m => m.Country)

我有一个Enum CountryModel.cs:

//[Display(Name = "None", ResourceType = typeof(Web.Models.CountryResources.Fixtures))]
    //None = 0,
    [Display(Name = "Canada", ResourceType = typeof(Web.Models.CountryResources.Fixtures))]
    Canada = 1,
    [Display(Name = "Mexico", ResourceType = typeof(Web.Models.CountryResources.Fixtures))]
    Mexico = 2,
    [Display(Name = "UnitedStates", ResourceType = typeof(Web.Models.CountryResources.Fixtures))]
    UnitedStates = 3

值存储在不同语言的resx文件中。对于英语,这会根据countrymodel中的顺序以正确的顺序显示,但对于法语来说,应该是(值来自country.fr.resx):     加拿大     ÉtatsUnis(美国)     墨西哥(墨西哥) 代替:     加拿大     墨西哥     ÉtatsUnis

我的名单实际上有37个国家,我们可以随时添加。所选国家/地区的整数将写入数据库,以供以后检索/编辑。

那么如何获取EnumDropDownListFor以基于resx值进行排序?我应该使用EnumDropdownListFor以外的其他东西吗?我已经看到了从resx获取值的示例,并且可以正常工作,但是我还没有找到根据这些值对它进行适当排序的示例。谢谢!

编辑:忘了说我的模特有:

[Display(Name = nameof(Account.Account.Country), ResourceType = typeof(Account.Account))]
    public CountryModel Country { get; set; }

1 个答案:

答案 0 :(得分:0)

我最终改用DropDownListFor并使其工作。不知道是否有使用EnumDropDownListFor的更好方法,但我找不到它。

因此,从以下位置切换

@Html.EnumDropDownListFor(m => m.Country)

至:

@Html.DropDownListFor(m => m.Country, EnumHelper.GetSelectList(typeof(Mlc.Acs.Web.Models.CountryModel)).OrderBy(x => x.Text))