0

ビューモデルで適切に入力されたビューを取得したときに、データベースに新しい登録を追加しようとすると、ビューモデルに問題がありますDbEntityValidationErrors

これは viewmodel を使用したコードです:

    [HttpPost]
    public ActionResult Create(Annonce annonce)
    {
        /*
        if (ModelState.IsValid)
        {
          */  

            _userservice.addannonce(annonce);

            return RedirectToAction("Index");
        /*
        }

       return View(new AnnonceView(annonce));
         * */
    } 

しかし、ビューでエンティティ ドメイン Annonce を直接使用すると、問題が発生します。私を助けてください、私の悪い英語を申し訳ありません

4

1 に答える 1

1

addannounce メソッドが EntityModel タイプのオブジェクトを期待していると仮定しています。ビューモデルではありません。ViewModel は、View を処理するために固有のものです。Entity Model とは異なります。作成した View Model をそのままエンティティ フレームワークに送信して保存することはできません。エンティティ モデルを送信する必要があります。おそらく、ViewModel の値を読み取り、Entity Model の関連するプロパティ値として設定し、それを送信して保存することができます。このようなもの

YoueEntity.Announce objEntityAnnounce=new YoueEntity.Announce();
//Read from the posted viewmodel and set the values to entity model.
objEntityAnnounce.ID=annonce.ID;
objEntityAnnounce.Title=annonce.Title;
//Other relevant Properties as well

_userservice.addannonce(objEntityAnnounce);

このマッピングを行う AutoMapper のようなライブラリがあります。

于 2012-04-22T15:34:41.100 に答える