C# ASP.MVC的显示值转换器
我有一些型号包含国家ISO代码。我想用实际的国家名称来显示这些,而不仅仅是ISO值 所以在一般意义上,我的模型中有键,我在字典中有这些键的定义,我想在UI中显示定义 最近主要在WPF中工作,我将在那里创建一个转换器,每当我想转换一个值(甚至是双向的)时,我都可以在UI绑定中引用它。如果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
我当然可以推出自己的定制转换器解决方案,但更愿意坚持最佳实践,因此非常感谢任何指导 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