2

私は現在自分の学習目的のために賞賛されたブログ以上の私の最初のMVCプロジェクトに取り組んでいます。その時点でコードが最初から存在していたとしても、データベースの最初のアプローチから始めました。それで、私は検証をどのように処理すべきかについて私にいくつかの混乱を与えました。MVC3バディークラス、ViewModelsとバリデーション

私はArticlesテーブルをデータベースに持っています。対応するArticleクラスがEFによって生成されています。私はArticleViewModelクラスもあり、それぞれのプロパティに一致するプロパティを持っています(Article)。私は単純なCRUD操作を行っていますが、現在はArticleViewModelの代わりに強い型のArticleモデルを使用しており、データ検証は行われていません。

今日、私の選択肢を評価するためにいくつかの調査をしたところ、followingquestionsthisブログ記事が見つかりました。だから私はMetadataType属性をEF生成クラスに適用してそこに私の検証を入れることができるかのように見えますが、バリデーションを含むバディクラスを読むのは悪い習慣です。私はそれがなぜなのか分かりませんが、そうであれば、私はバディのクラスを無視し、次のようなことをするべきでしょうか?

[MetadataType(typeof(ArticleViewModel))] 
public partial class Article 
{ 
    public Article(ArticleViewModel avm) 
    { 
     // Copy the properties from the ArticleViewModel into an Article. 
    } 
} 

その後、必要に応じてArticleViewModelにDataAnnotationsを適用し、ArticleViewModelを使用するために私のコントローラ/ビューを更新しますか?

事前にお問い合わせいただきありがとうございます。 :)

答えて

3

はい、私は最近、このアプローチを学びました!あなたが追加コードを気にしない限り、それは良い習慣です。詳細とコード例の受け入れられた答えについては、Where do you put your validation in asp.net mvc 3?を参照してください。

+0

正しいです、これは行く方法です – mare

+0

ありがとうございます! –

+0

ビューのモデルとして外部キーを持つ複雑なテーブルを使用し、そのビューを処理のために送信すると、パフォーマンスに何か影響はありますか?通常、私はビューでのみ使用されるモデルを作成し、そのモデルを自分のデータレイヤーに/から送信し、適切な方法でモデルを変換しました。私はこれを最近知ったが、検査の結果、モデルはLINQ2SQLとすべてのドリルダウンテーブルについて何かを保持していた...?このプラクティスを使用すると、1分に1000ページのビューが悪化しますか? – ppumkin

関連する問題