0

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)

    //...
}   

ただし、コードを値にマップしてそれらを維持できる限り、私の問題の解決策はリソース ファイルを使用する必要はありません。前もって感謝します!

4

1 に答える 1

1

あなたはあなた自身の質問に答えました。

Unfortunatetly, the codes and explanations are not digitalized-それらをDBに入れ、クエリ時に結合するだけです。

アップデート:

他の解決策は、マッピングを使用して静的を作成しDictionary<string, string>、モデルにデータを入力しながらルックアップを行うことです。プロパティを再利用BrandCodeするか、新しいプロパティを定義できます。

于 2013-06-20T15:02:25.277 に答える