【问题标题】:MVC layout not being found未找到 MVC 布局
【发布时间】: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


【解决方案1】:

您的问题似乎与相对路径和绝对路径有关..

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

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

使用/path 强制路径从根开始解析。这就是所谓的绝对路径,无论你从哪里开始,它总是指向同一个位置..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2017-01-07
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多