我有一个 MVC 3 应用程序,它有一个默认视图和一个第二个视图,我将其称为 SecondView。SecondView 有一个对应的控制器,SecondViewController。
SecondViewController.cs 包含两个过程: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”,也会发生同样的事情。)
有没有办法在控制器中调用一个过程(“索引”除外),然后加载一个视图,该视图将在正确的位置进行布局?