找不到MVC布​​局

时间:2012-10-16 21:10:13

标签: asp.net-mvc asp.net-mvc-3 layout razor asp.net-mvc-routing

我有一个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”。)

有没有办法在控制器中调用一个过程(“索引”除外),然后加载一个可以在正确位置查看布局的视图?

1 个答案:

答案 0 :(得分:0)

似乎你的问题是关于相对路径和绝对路径..

阅读http://en.wikipedia.org/wiki/Path_%28computing%29

您使用相对路径,这意味着相对于当前目录。

使用/path强制路径开始从根解析。在某种意义上,这被称为绝对路径,无论你从哪里开始,它总是指向相同的位置..