EnumDropDownList для локализации значения resx - PullRequest
0 голосов
/ 11 марта 2019

Я новичок в бритве MVC и MVC в целом. У меня есть EnumDropDownListFor, который отображает страны на соответствующем языке. То, что мне нужно, это выпадающий список, отсортированный в альфа-порядке в зависимости от различных значений resx локализации.

в моем 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 для разных языков. Для английского языка это отображается в правильном порядке, основанном на порядке в модели страны, но для французского языка это должно быть (значения, полученные из country.fr.resx): Канада États Unis (который является США) Мексика (которая является Мексикой) вместо: Канада Mexique États Unis

В моем списке 37 стран, и мы можем добавить его в любое время. Целое число выбранной страны записывается в БД для последующего поиска / редактирования.

Так как же заставить EnumDropDownListFor сортировать по значениям resx? Должен ли я использовать что-то другое, чем EnumDropdownListFor? Я видел примеры получения значений из resx, и это работало, но я не нашел примеров, как заставить их сортировать соответствующим образом на основе этих значений. Спасибо!

Редактировать: забыл сказать, что моя модель имеет:

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

1 Ответ

0 голосов
/ 12 марта 2019

В итоге я переключился на DropDownListFor, и он заработал.Не уверен, что есть лучший способ использования EnumDropDownListFor, но я не смог его найти.

Итак, переключился с:

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

на:

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