【发布时间】:2012-10-16 21:10:13
【问题描述】:
我有一个 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”,也会发生同样的情况。)
有没有办法在控制器中调用一个过程(“索引”除外),然后加载一个在正确位置进行布局的视图?
【问题讨论】:
-
所以您的问题实际上不是关于找不到 MVC 布局,而是您的资源路径不正确?
-
好吧,当你这样说的时候......实际上,当你这样说的时候,我想我解决了这个问题——当我在每个 URL 前面加上一个“/”时布局文件,它现在似乎可以工作了。
-
另外,您是否考虑过使用Glimpse 之类的工具进行故障排除?
标签: asp.net-mvc asp.net-mvc-3 layout razor asp.net-mvc-routing