0

部分ビューを多用するMVC4サイトに取り組んでいます。ただし、あるページでは、ネストされた部分ビュー内で同じ部分ビューを使用しており、モデルもネストされています。Fiddlerでチェックアウトしましたが、データはフォームの一部として投稿されています。コントローラのアクションメソッドで設定したブレークポイントに達すると、これらのネストされたビューモデルはnullとして入力されます。部分ビューの代わりにエディターテンプレートを使用してみましたが、うまくいきませんでした。

誰かが以前にこの行動を経験したことがありますか?そうです、あなたはそれを引き起こしているかもしれないものについて何か考えがありますか?

4

1 に答える 1

1

ネストされた ViewModel プロパティを誤って部分ページに渡してしまったため、以前にも同じ問題が発生しました。

パーシャルをネストしている場合は、モデルをどのように渡すかについて注意する必要があります。次に例を示します。

これがあなたのViewModelだとしましょう:

public class Person
{
public string Name {get; set;}
public Address Address {get; set;}
}

public class Address
{
public string Line1 {get; set;}
//etc
}

そしてあなたのコントローラーアクション:

public ActionResult UpdatePerson(Person p)
{
}

アドレスを表示する別のビューがある場合は、次のようにしてください。

@Html.RenderPartial("Address", Model)

そして、このようではありません:

@Html.RenderPartial("Address", Model.Address)

2 番目の例を実行すると、"TextboxFor" 入力の名前は、モデル バインダーが理解できるように間違った名前が付けられます。

もう 1 つのオプションは、モデル バインダーがアドレスを適切に認識できるようにするために、次のようにコントローラー アクションで具体的にアドレスを呼び出すことです。

public ActionResult UpdatePerson(Person p, Address addr)
{
}
于 2012-06-16T15:43:05.960 に答える