2

多くのプロパティを持つエンティティ クラスがあり、各プロパティには表示名があります。プロパティを表示するページがあります。このために、エンティティ クラスからプロパティをコピーしたモデルを作成しました。

コントローラーでは、データベースからデータを取得し、必要なすべてのデータを含むエンティティ クラスのアイテムを取得します。リフレクションを通じて、すべてのデータをモデルにコピーします。Html ヘルパーを使用してページに、モデルから取得したプロパティの名前とプロパティ値を表示します。

私の質問は - それをより良く実装する方法は? エンティティ クラスからモデルにプロパティをコピーするのはやり過ぎなのだろうか。さらに、プロパティの表示名属性を複製しました。

エンティティ クラス全体を表すモデルにプロパティを作成し、ページからモデルを介してデータを取得することを考えていましたが、このクラスのプロパティを使用していました。ただし、これは透過的なソリューションのようには見えません。

より良い技術についてのアイデアを歓迎します。

4

1 に答える 1

1

ベスト プラクティスに従っていると思いますが、重複を減らす方法がいくつかあります。

  1. エンティティ モデルとビュー モデルのフィールドが同じ名前である場合、両方のモデルで同じ MetaData アノテーション クラスを再利用できる可能性があります。それか、これらの注釈クラスの継承を通じて、重複する構文を減らします。

  2. 上記を行いたくない場合は、表示属性にリソース ファイルを使用します。http://thatextramile.be/blog/2011/03/convention-based-localization-with-asp-net-mvc/これにより、一部の重複が不要になります。また、ローカリゼーションのために適切に設定します。

  3. 推奨しているわけではありませんが、Bind Exclude アノテーションを設定してクライアント側でのプロパティ インジェクションから身を守る限り、エンティティ モデルをビュー モデルとして使用できます。パンツタイプのものと比べて簡単ですが、セキュリティ上のリスクはありますが、重複を減らします.

  4. リフレクションを使用しているということですか?素晴らしい Automapper に似たものを使用していると思いますか? http://automapper.codeplex.com/そうでない場合は、時間を節約できます。

これが少しでも役立つことを願っています。

PS 開発者が既に持っているものよりも優れたものを作ろうとしているのを見るのは常に本当に良いことです。それは、役割における大きな成熟と私たちの技術に対する情熱を示しています。悲しいことに、これはしばしば欠けています。

于 2013-04-10T14:56:45.900 に答える