【问题标题】:Localizing Enum entry on asp.net core在 asp.net 核心上本地化枚举条目
【发布时间】:2019-04-17 20:47:42
【问题描述】:

如何在 asp.net core 上本地化以下枚举条目?我在 asp.net-core github 存储库 (https://github.com/aspnet/Mvc/pull/5185) 上发现了一些问题,但我找不到合适的方法。

目标枚举:

public enum TestEnum
{
    [Display(Name = "VALUE1_RESX_ENTRY_KEY")]
    Value1,
    [Display(Name = "VALUE3_RESX_ENTRY_KEY")]
    Value2
}

CSHTML 代码块:

<select id="test" asp-items="Html.GetEnumSelectList<TestEnum>()">
</select>

资源文件:

【问题讨论】:

    标签: localization asp.net-core .net-core


    【解决方案1】:

    这似乎是一个将在 3.0.0 中修复的错误: https://github.com/aspnet/Mvc/issues/7748

    服务器端的解决方法是这样的:

    private List<SelectListItem> GetPhoneStateEnumList()
    {
        var list = new List<SelectListItem>();
        foreach (PhoneState item in Enum.GetValues(typeof(PhoneState)))
        {
            list.Add(new SelectListItem
            {
                Text = Enum.GetName(typeof(PhoneState), item),
                Value = item.ToString()
            });
        }
        return list.OrderBy(x => x.Text).ToList();
    }
    

    【讨论】:

      【解决方案2】:

      我创建了一个本地化枚举的标签助手,您只需要传递枚举类型和本地化方法的委托。

      <select-enum 
          enum-type="typeof(TestEnum)" 
          selected-value="(int)TestEnum.Value1" 
          text-localizer-delegate="delegate(string s) { return Localizer[s].Value; }"
          name="testEnum">
      </select-enum>
      

      或者如果您使用共享资源进行本地化:

      <select-enum 
          enum-type="typeof(TestEnum)" 
          selected-value="(int)TestEnum.Value1" 
          text-localizer-delegate="delegate(string s) { return MyLocalizer.Text(s); }"
          name="testEnum">
      </select-enum>
      

      从金块安装:

      Install-Package LazZiya.TagHelpers -Version 2.0.0
      

      阅读更多here

      【讨论】:

        【解决方案3】:

        我也有同样的问题。我的解决方法是明确指定枚举选项:

        <select asp-for="Gender" class="form-control">
            <option disabled selected>@Localizer["ChooseGender"]</option>
            <option value="0">@Localizer["Male"]</option>
            <option value="1">@Localizer["Female"]</option>
        </select>
        

        【讨论】:

          猜你喜欢
          • 2021-08-13
          • 1970-01-01
          • 2021-08-03
          • 2019-01-13
          • 1970-01-01
          • 2017-10-03
          • 2020-06-07
          • 2021-05-15
          • 1970-01-01
          相关资源
          最近更新 更多