次のエラー メッセージが表示されて困っています。
Object reference not set to an instance of an object.
改行:
Line 16: </div>
Line 17: <div class="editor-field">
Line 18: @Html.DropDownList("KPI.CSF.FYID", Model.Financial_Years)
Line 19: @Html.ValidationMessageFor(model => model.KPI.CSF.FYID)
Line 20: </div>
これは、mvc プロジェクトでのフォーム ポスト中に発生します。
作成フォームをロードするときに、次のビューモデルを渡しています。
public class KPICreateFormViewModel
{
//Properties
public KPI KPI { get; set; }
public SelectList Financial_Years { get; private set; }
FYRepository fyrepo = new FYRepository();
public KPICreateFormViewModel(KPI kpi)
{
KPI = kpi;
Financial_Years = new SelectList(fyrepo.GetFys(), "ID", "Financial_Year");
}
}
私は会計年度をドロップダウンに使用します。これにより、いくつかの ajax が開始され、投稿に ID 番号が入力される他のいくつかのドロップダウンがカスケードされます。
会計年度のドロップダウンで、コントローラーの http ポスト メソッド中に何もポストしたくなかったので、次のものを返すだけで問題ないと考えました。
[HttpPost]
public ActionResult Create(KPI kpi)
{
try
{
kpirepository.Add(kpi);
kpirepository.Save();
return RedirectToAction("Details", new { id = kpi.ID });
}
catch
{
return View();
}
}
私のビューがビューモデルに基づいているため、これはすべて起こっていると思いますが、投稿時にこれを返していませんか? カスケードコードを何時間もいじって機能させた後、この問題に取り組むために頭が少し揚げられています..助けてください!
会計年度のドロップダウンを示す私のビューに関連する部分:
@model ES_Business_Intelligence.ViewModels.Admin.KPICreateFormViewModel
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>KPI</legend>
<div class="editor-label">
@Html.LabelFor(model => model.KPI.CSF.FYID)
</div>
<div class="editor-field">
@Html.DropDownList("KPI.CSF.FYID", Model.Financial_Years)
@Html.ValidationMessageFor(model => model.KPI.CSF.FYID)
</div>