Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.MVC的显示值转换器_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# ASP.MVC的显示值转换器

C# ASP.MVC的显示值转换器,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一些型号包含国家ISO代码。我想用实际的国家名称来显示这些,而不仅仅是ISO值 所以在一般意义上,我的模型中有键,我在字典中有这些键的定义,我想在UI中显示定义 最近主要在WPF中工作,我将在那里创建一个转换器,每当我想转换一个值(甚至是双向的)时,我都可以在UI绑定中引用它。如果ASP.MVC中有类似的开箱即用的概念,那将是理想的 或者,我可以将国家名称作为属性添加到模型中,但这让人觉得很麻烦 我当然可以推出自己的定制转换器解决方案,但更愿意坚持最佳实践,因此非常感谢任何指导 HtmlHe

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

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

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

或者,我可以将国家名称作为属性添加到模型中,但这让人觉得很麻烦


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

HtmlHelper可能是解决您的问题的一个优雅的解决方案

首先,您声明了一个HTMLHelper,如下所示:

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);
      }
}

如果有人对我的问题投反对票,我将不胜感激。我如何才能让这个问题变得更好?如果有一个自定义属性,比如
DisplayValue
,它会根据字典查找来更改显示的值呢?这将使你的代码保持干涸,而不是让选民失望,但我冒昧地猜测,这与问题中缺少代码有关。有些人看不到代码,不费心去读问题,只是投反对票。谢谢Jon P。我也不屑于“为我做我的工作”之类的问题。这里的问题是,在我尝试将一些代码组合在一起之前,我正在寻找关于基于最佳实践解决问题的方向性方法的建议。谢谢你的反馈。谢谢,我会试试看。我需要动态地提供字典,但这应该很简单,如果我可以通过静态类上的依赖项注入来实现,那就另当别论了:)
@Html.ISOToCountry(Model.ISO) //Print the country
@Html.CountryToISO("England") //Print the ISO