0

どこにでもある「オブジェクト参照」エラーが発生し、それを解決する方法がわかりません。部分的なビューを呼び出すことと関係があると思います。私は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
}
....

@ifvs.を除いてif、それは本質的に同じコードであるため、私は混乱しています。何を間違えたのか、どうやって修正するのかわかりません。

コンテキストについては、ここにありますMyViewModel

public class MyViewModel
{
    public MyModel MyModel { get; set; }
}

そして、MyDropDownMyRadioButtonenumsこうして使用しています:

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(ウィザードの部分ビューとして以外に)直接呼び出しがない場合でも、その部分ビューのを作成する必要がありますか?ありがとうございました。

4

1 に答える 1

5

パーシャルにはモデルが必要です

@model MyViewModel

モデルを渡す必要があります

@{ Html.RenderPartial("_MyPartialView", MyViewModel);

または、子アクションを使用して、パーシャルを呼び出します

@Action("_MyPartialView");

対応するアクションで

    public ActionResult _MyPartialView()
    {

        MyViewModel model = new MyViewModel();
        return View(model)
    }
于 2013-02-14T17:01:52.453 に答える