stringdata を表すコードを含むフィールドを持つ外部データベース (読み取り権限のみ) を持っています。残念ながら、コードと説明はデジタル化されていません。代わりに、T = トヨタ、M = メルセデス、F = フェラーリなどと書かれた論文がたくさんあります。
これらのコードを完全な文字列に変換し、保守を容易にする方法を探しています。
[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」のデータ注釈を追加するだけでデータベース値をリソースファイルに渡すことができるという印象を受けましたが、次のエラーが発生します。
ローカリゼーションに失敗したため、プロパティ 'Name' を取得できません。タイプ「MyProject.Resources.Car.BRAND」は公開されていないか、「登録番号」という名前の公開静的文字列プロパティが含まれていません
データベースから取得したフィールド値ではなく、リソース ファイルが表示名を使用しているようです (アクセス修飾子が public に設定されています)。
モデル
// ...
[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)
//...
}
ただし、コードを値にマップしてそれらを維持できる限り、私の問題の解決策はリソース ファイルを使用する必要はありません。前もって感謝します!