2011-02-08 4 views
1

私のモデルの '編集'ビューで使用するために部分ビューを作成しました。私は正常にレコードを編集することができますが、私の '作成'ビューの部分ビューを使用するときにnull参照例外が発生します。ASP .NET MVC - 部分ビューを作成すると、 '編集'アクション結果のみが表示され、作成されません。

これは私の部分図である:作成GET

[HttpPost] 
public ActionResult Create(Reason reason) 
{ 
    if (ModelState.IsValid) 
      { 
       db.Reason.Add(reason); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      //invalid ... 

:フォーム送信の有効な値を選択/入力する際に​​

public ActionResult Create() 
    { 
     ViewBag.Contract = db.Contract.OrderBy(g => g.Name).ToList(); 
     var reason = new Reason(); 
     return View(reason); 
    } 

なります

@model MvcA.Models.Reason  

     @Html.LabelFor(model => model.reason) 
     @Html.EditorFor(model => model.reason) 

     @Html.LabelFor(model => model.Contract) 
     @Html.DropDownList("ContractId", 
     new SelectList(ViewBag.Contract as System.Collections.IEnumerable, 
     "ContractId","Name",Model.ContractID)); 

とPOSTのActionResult Visual Studioで、部分ビューの 'DropDownList'に 'NullReferenceExce ptionは未処理だった。

nullエラーの原因を特定するにはどうすればよいですか? (私はMVC初心者です)

UPDATE:エラーは私のコントローラの[HttpPost] Createメソッドに関連しているようです。私はモデルのフィールドの1つと同じ名前を使用して入力クラスの名前を付けていました...これはnull参照例外でプログラムを壊したようです。

答えて

1

例外が発生したときに作成アクションに投稿すると、モデルは有効か無効になりますか?無効な場合は、検証でフォームを表示するビューを返すが、そのビューの要件の一部が欠落している可能性があります(ViewBag.Contractに値が設定されているなど)。両方の作成アクションを完全に表示すると、これを確認するのが簡単になります。あなたの部分図を作成をレンダリングするとき

+0

私は「GET」の作成アクションを追加しました。 –

+0

キーはPOST作成アクションのもう1つの部分ですが、GETアクションのようにViewBag.Contractを設定していますか?モデルが無効である場合、ビューの一部を再表示するPOST作成メソッドで 'ViewBag.Contract = db.Contract.OrderBy(g => g.Name).ToList();'が必要です。 – Cymen

1

は、試してみてください。

<% Html.RenderPartial("YouPartialViewName", new Reason()); %> 
関連する問題