5

コントローラーからビューにいくつかのデータを渡しています。これは、そのビュー内の部分的なビュー内に表示したいと考えています (質問しないでください。複雑です)。別のビューに関連付けられているビューにモデルを渡すことさえすべきではないことはわかっていますが、部分ビューが実際には親ビューからモデルを継承していることに気付きました。

public ActionResult Index(){

 Person p = new Person
 {
    FName = "Mo",
    LName = "Sep"

 };

 return View(p);

}

次に、Indexビュー内に次のものがあります。

<h2>Index</h2>

@Html.Partial("_IndexPartial")

と私が持っている内部_IndexPartial

@Model.FName 

これは「Mo」を出力します。

この動作は、子コントロールが親ビューのデータ コンテキストを継承する WPF のように意図されていますか? また、アプリケーションでこれを使用することは悪い習慣と見なされますか?

ありがとう。

4

2 に答える 2

4

この動作は、子コントロールが親ビューのデータ コンテキストを継承する WPF のように意図されていますか?

はい。

現在、レイアウトを継承するだけで機能し、パーシャルをまったく使用する必要がない場合にモデルを渡していないようです。

そのまま使い続けたい場合は、それについてもっと明確にして、現在のモデルをパーシャルに渡します。

@Html.Partial("_IndexPartial", Model)

Html.Partial(view) のソースを見ると:

public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName)
{
    return Partial(htmlHelper, partialViewName, null /* model */, htmlHelper.ViewData);
}

htmlHelper.ViewData を介してモデルを渡します。ビューで @{ViewData.Model} を使用して同じ方法でモデルにアクセスできますが、これは良い方法ではありません

于 2012-11-17T14:17:43.633 に答える
1

オーバーロードを使用して、モデルを 2 番目のパラメーターとして部分ビューに渡すことができます。

@Html.Partial("viewname", Model)

強く型付けされたビューとそれらがもたらす利点の全体的なポイントとして、このアプローチIMOに問題はありません...

于 2012-11-17T14:05:19.077 に答える