我是剃刀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; }
答案 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))