どこにでもある「オブジェクト参照」エラーが発生し、それを解決する方法がわかりません。部分的なビューを呼び出すことと関係があると思います。私はjqueryウィザードを使用しているので、部分的なビューは表示されるウィザードの「ステップ」です。
私のメイン.cshtml
ビューでは、これを行います(HTMLは省略しています)。
@using MyNamespace.Models
@using MyNamespace.ViewModels
@model MyViewModel
...
...
using (Html.BeginForm())
{
...
// this works inside MAIN view (at least it goes through
// before I get my error)
if (Model.MyModel.MyDropDown == DropDownChoice.One)
{
//display something
}
...
// here i call a partial view, and in the partial view (see
// below) I get the error
@{ Html.RenderPartial("_MyPartialView"); }
...
}
上記は機能します(少なくとも、エラーが発生する前に実行されます)。
これが私の部分的な見方です(ここでも、HTMLは省略しています):
@using MyNamespace.Models
@using MyNamespace.ViewModels
@model MyViewModel
....
// I get the object reference error here
@if (Model.MyModel.MyRadioButton == RadioButtonChoice.One)
{
// display something
}
....
@if
vs.を除いてif
、それは本質的に同じコードであるため、私は混乱しています。何を間違えたのか、どうやって修正するのかわかりません。
コンテキストについては、ここにありますMyViewModel
:
public class MyViewModel
{
public MyModel MyModel { get; set; }
}
そして、MyDropDown
とMyRadioButton
はenums
こうして使用しています:
public enum DropDownChoice { One, Two, Three }
public enum RadioButtonChoice { One, Two, Three }
public DropDownChoice? MyDropDown { get; set; }
public RadioButtonChoice? MyRadioButton { get; set; }
私のコントローラーには、メインフォームに対するアクションのみがあり、部分ビューに対するアクションはありません。
public ActionResult Form()
{
return View("Form");
}
[HttpPost]
public ActionResult Form(MyViewModel model)
{
if (ModelState.IsValid)
{
return View("Submitted", model);
}
return View("Form", model);
}
何かご意見は?ActionResult
(ウィザードの部分ビューとして以外に)直接呼び出しがない場合でも、その部分ビューのを作成する必要がありますか?ありがとうございました。