1

重複の可能性:
部分ビューでMVC 3 ViewBagを変更しても、_Layout.cshtmlに保持されません

PartialViewからpageTitleを設定しようとしています

これが私のコードです:

PartialViewテンプレート:

@{
    ((WebViewPage)WebPageContext.Current.Page).ViewBag.Title = "Page title";
}

_Layout.cshtml:

<title> @ViewBag.Title</title>

これを行う方法?

4

1 に答える 1

5

それはパーシャルがすべきことではありません。親ビューを変更するのはその責任ではありませんViewBag。そしてそれに加えて、それは不可能です。MSDNからの引用

部分ビューがインスタンス化されると、親ビューで使用できるViewDataDictionaryオブジェクトの独自のコピーを取得します。したがって、部分ビューは親ビューのデータにアクセスできます。ただし、部分ビューがデータを更新する場合、それらの更新は部分ビューのViewDataオブジェクトにのみ影響します。親ビューのデータは変更されません。

ここに示されている回避策 はいつでも実行できますが、実行しないでください。パーシャルは、親の状態を設定してはなりません。彼らは親について何も知らないはずです。

于 2012-07-16T20:51:30.563 に答える