アクション内で PartialView() を呼び出してレイアウトを使用する必要がありますか?
これが私のアクションです:
public ActionResult SomeAction()
{
if (Request.IsAjaxRequest())
return PartialView();
else
return View();
}
ここに私の _ViewStart.cshtml があります:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
シナリオ 1 : アクションは、レイアウトが指定されていないビューを呼び出します。
@{
//Layout = "~/Views/Shared/_SomeLayout.cshtml";
}
<h2>View!</h2>
- ビューの結果: ビューはレイアウトでラップされます
- PartialView の結果: ビューはレイアウトにラップされていません
これは、Darin Dimitrov からのこの応答によって裏付けられています。
シナリオ #2 : アクションは、指定されたレイアウトでビューを呼び出します。
@{
Layout = "~/Views/Shared/_SomeLayout.cshtml";
}
<h2>View!</h2>
- ビューの結果: ビューはレイアウトでラップされます
- PartialView の結果: ビューはまだレイアウトにラップされています
これは、Darin Dimitrov からのこの他の応答によっても裏付けられているようです。(注:彼の答えはAJAXリクエストの包括的なものですが、これはOPに2つのビュー(1つは完全でもう1つは部分)があるという質問への回答でした。)
最初に、Darin は、レイアウトが必要ない場合は PartialView() を使用すると説明していますが、2 つ目では、レイアウトが必要ない場合は回避策があると言っています。
私が欠けているものがあるかどうか、またはなぜそれがこのようになっているのか、誰かが私に説明できますか. Darin が何を言ったかに関係なく、レイアウトのみを設定した場合_ViewStart.cshtml
は PartialView() で無視できますが、ビュー自体に別のレイアウトを設定した場合は無視できません。
これは理にかなっていますか?両方のレイアウトを無視できるようにする必要がありますか? そうでない場合、なぜですか?