私のモデルの '編集'ビューで使用するために部分ビューを作成しました。私は正常にレコードを編集することができますが、私の '作成'ビューの部分ビューを使用するときに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参照例外でプログラムを壊したようです。
私は「GET」の作成アクションを追加しました。 –
キーはPOST作成アクションのもう1つの部分ですが、GETアクションのようにViewBag.Contractを設定していますか?モデルが無効である場合、ビューの一部を再表示するPOST作成メソッドで 'ViewBag.Contract = db.Contract.OrderBy(g => g.Name).ToList();'が必要です。 – Cymen