0

我有一个外部数据库(仅限阅读权限),其中包含表示字符串数据的代码的字段。不幸的是,代码和解释没有数字化。相反,我有一堆文件说明 T=Toyota、M=Mercedes、F=Ferrari 等。

我正在寻找一种将这些代码转换为完整字符串并保持可维护性的方法。

[Desired result]              [Current result]
 -Regnumber   -Brand          -Regnumber    -Brand
 ABC001        Toyota          ABC001        T
 FGH783        Ferrari         FGH783        F
 LKJ345        Mercedes        LKJ345M       M

我考虑过使用枚举,但这似乎需要大量的工作来声明(500 多个值),所以我在考虑使用资源文件(XML 应该易于维护),但我愿意接受建议

我的计划是为每个包含代码的表创建一个单独的资源文件:

./Resources/Cars/BRAND.resx
./Resources/House/BUILDINGTYPE.resx
./Resources/House/COLOR.resx
./Resources/Flowers/NAME.resx

这样,将来很容易找到和更改内容。但我想知道从资源文件接收值的好地方(模型、视图、其他)是什么?

此外,我尝试使用DataAnnotations我可能完全错过了这一点。我的印象是,只需添加显示类型为“ResourceType = foo”的数据注释,就可以将数据库值传递给资源文件,但随后出现以下错误:

无法检索属性“名称”,因为本地化失败。类型“MyProject.Resources.Car.BRAND”不是公共的或不包含名为“registration number”的公共静态字符串属性

似乎资源文件正在使用显示名称而不是从数据库中检索的字段值(访问修饰符设置为公共)


模型

    // ...

    [Key]
    public int ID { get; set; }

    [Display(Name="registration number")]
    public string registrationNr { get; set; }

    [Display(Name="Brand", ResourceType = typeof(Resources.Car.BRAND))]
    public string BrandCode { get; set; }

    //...

看法

foreach(modelItem in Model.Car)
{
    //...

    @Html.DisplayNameFor(modelItem => modelItem.BrandCode)
    @Html.DisplayFor(modelItem => modelItem.BrandCode)

    //...
}   

但是,我的问题的解决方案不必使用资源文件,只要我可以将代码映射到值并维护它们,我就会成为一个快乐的人。提前致谢!

4

1 回答 1

1

你已经回答了你自己的问题。

Unfortunatetly, the codes and explanations are not digitalized- 您需要将它们放在您的数据库中,并在查询时进行连接。

更新:

其他解决方案是使用映射创建静态Dictionary<string, string>并在填充模型时进行查找。您可以重用BrandCode属性或定义一个新属性。

于 2013-06-20T15:02:25.277 回答