デフォルトのビューと、SecondView と呼ぶ 2 番目のビューを持つ MVC 3 アプリケーションがあります。SecondView には、対応するコントローラー SecondViewController があります。
SecondViewController.cs には と の 2 つのプロシージャが含まれてIndex()
おりLoadSecondView(id)
、どちらも を返しView("SecondView")
ます。
SecondView.cshtml は以下で構成されます。
@{
ViewBag.Title = "SecondView";
Layout = "~/Views/_MasterLayout.cshtml";
}
<h2>Second View</h2>
メインの index.cshtml が window.open("SecondView") を呼び出すと、Views/_MasterLayout.cshtml にあるレイアウトを使用して、ページが期待どおりに読み込まれます。
ただし、window.open("SecondView/LoadSecondView/id-parameter-string") を呼び出すと、_MasterLayout は「現在のディレクトリ」が / ではなく /SecondView/LoadSecondView であると見なし、(たとえば) 画像へのすべてのリンクが現在間違った場所を指すため、レイアウト全体が無視されます。(LoadSecondView がパラメータを取らず、呼び出し URL が単に「SecondView/LoadSecondView」の場合も同じことが起こります。)
コントローラで(「インデックス」以外の)プロシージャを呼び出して、レイアウトの正しい場所に表示されるビューをロードする方法はありますか?