2012-01-06 9 views
2

私は、ページ上のフォームを介してサブミットされたデータのプロパティとポピュレートに使用されたコレクションのプロパティを含むビューモデルに強く型付けされたビューを持っています私のドロップダウンリスト。ViewModelのドロップダウンリストコレクションでASP.NET MVC 3サーバー側の検証が失敗する

投稿時に、モデル状態が有効かどうかを確認します。ビューが返されない場合、ビューモデルにはドロップダウンのコレクション値が含まれていないため、null参照が取得されています。

フォームビューを再度返す前に、ビューモデルのドロップダウンコレクションを再水和する必要がありますか?

コントローラ方法:

[HttpPost] 
    public ActionResult Create(UserProfileCreateViewModel viewModel) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 
       // TODO: Add insert logic here 

       return RedirectToAction("Index"); 
      } 
      catch 
      { 
       return View(); 
      } 
     } 
     return View(); 
    } 

答えて

3

はい、あなたがする必要があります。 Httpはステートレスプロトコルであり、ASP.NET MVCにはポストバックやビューステートという概念はありません。

ModelState.IsValidfalseに設定されている場合は、適切なオブジェクトを再作成して送り返す必要があります。

1

はい、再水和する必要があります。あなたのモデルに縛られているのは、フォームの投稿に投稿されたものだけです。したがって、ドロップダウンリストから選択した項目の値を取得できますが、ドロップダウンリスト全体ではありません。

関連する問題