モデルの「編集」ビューで使用する部分ビューを作成しました。レコードを正常に編集できますが、「作成」ビューの部分ビューを使用すると、null 参照例外が発生します。
これは私の部分的な見解です:
@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:
[HttpPost]
public ActionResult Create(Reason reason)
{
if (ModelState.IsValid)
{
db.Reason.Add(reason);
db.SaveChanges();
return RedirectToAction("Index");
}
//invalid ...
GET 作成:
public ActionResult Create()
{
ViewBag.Contract = db.Contract.OrderBy(g => g.Name).ToList();
var reason = new Reason();
return View(reason);
}
有効な値を入力/選択すると、フォームの送信により、Visual Studio が終了し、部分ビューで見つかった「DropDownList」が「NullReferenceException was unhandled」で終了します。
null エラーの原因を特定するにはどうすればよいですか? (私はMVCが初めてです)
UPDATE : エラーは、コントローラーの [HttpPost] Create メソッドに関連しているようです。モデル内のフィールドの 1 つと同じ名前を使用して入力クラスに名前を付けていました...これは、null 参照例外でプログラムを壊したようです。