用于asp.net mvc的显示值转换器

本文关键字:显示 转换器 mvc asp net 用于 | 更新日期: 2023-09-27 17:49:35

我有一些包含国家ISO代码的模型。我想用实际的国家名称来显示这些,而不仅仅是ISO值。

一般来说,我的模型中有键,这些键的定义在字典中,我希望在UI中显示定义

最近主要在WPF中工作,在那里我会创建一个转换器,当我想要转换值(甚至是双向)时,我可以在UI绑定中引用它。如果在ASP中有类似的开箱即用的概念。MVC将是理想的。

或者我可以将国家名称作为属性添加到模型中,但是感觉很笨拙。

我当然可以推出我自己的自定义转换器解决方案,但更愿意坚持最佳实践,所以任何指导都是非常感激的。

用于asp.net mvc的显示值转换器

HtmlHelper可能是一个很好的解决方案。

首先,像这样声明一个HtmlHepler:
public static class CountryHTMLHelpers
 {
      //Initialize your dictionary here
      public static Dictionary<string, string> CountryDictionary;          
      public static IHtmlString ISOToCountry(this HtmlHelper helper, string iso)
      {
          string countryName = CountryDictionary[iso];
          return new HtmlString(countryName);
      }
      public static IHtmlString CountryToISO(this HtmlHelper helper, string country)
      {
          string iso = CountryDictionary.FirstOrDefault(x => x.Value == country).Key;
          return new HtmlString(iso);
      }
}

在视图中使用这些帮助器:

@Html.ISOToCountry(Model.ISO) //Print the country
@Html.CountryToISO("England") //Print the ISO