2

リポジトリでmvcを使用するときにモデルを検証する最良の方法は何ですか? 例を探しますが、まさに必要なものが見つかりませんでした。

5 つのプロパティを持つモデルがあると仮定します..そのうちの 3 つはデータ注釈付きです..そして、挿入する前にデータベースにチェックインする必要があるいくつかの検証があります。

有効かどうかを確認するには、「User.IsValidToInsert」のようなものが必要です。しかし、「ModelState.IsValid」も使用したいので、「IsValidToInsert」のデータ注釈を使用してすべてのプロパティを手動でチェックしたくないからです。

これどうやってするの?「IsValidToInsert」でデータベースにアクセスする検証を設定する必要がありますか? 'User' と 'ModelState' のようなパラメータをリポジトリ クラスに渡す必要がありますか?

4

1 に答える 1

0

ビューに固有のビュー モデルを使用する必要があります。Createを作成するアクションがある場合は、ビュー モデルProductを作成します。ProductCreate製品の作成に固有のデータ注釈 (または Fluent Validation など) を配置できます。これがビュー/コントローラーのモデルになります。編集ページがある場合は、ProductEditビュー モデルを作成します。

追加のロジック (ユーザーが既に存在するかどうかの検証など) がある場合は、それをサービス レイヤーに配置する必要があります。コントローラーはできるだけシンプルにする必要があります。ビュー モデルを投稿し、それをドメイン モデルに変換して渡します。必要に応じてサービス層に。

[HttpPost]
public ActionResult Create(ProductCreate model)
{
    // simple validations
    if( !ModelState.IsValid )
    {
        return View(model);
    }

    // Domain Model / Entity
    Product product = // create a product from your model here

    // service layer
    ProductService.Add(product);

    return RedirectToAction("Index");
}
于 2012-04-17T16:44:35.100 に答える