ASP.MVC

时间:2015-05-19 00:08:51

标签: c# asp.net asp.net-mvc

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

所以在一般意义上,我的模型中有键,我在字典中定义了这些键,我想在UI中显示定义。

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

或者我可以将国家/地区名称作为属性添加到模型中,但这感觉很糟糕。

我当然可以推出自己的自定义转换器解决方案,但我更愿意坚持最佳做法,因此非常感谢任何指导。

1 个答案:

答案 0 :(得分:3)

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