为什么我的View不包含_Layout.cshtml?

Ken*_*nci 17 asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我最近对我的MVC 3项目进行了一些更改.

当我运行它时,Views不包含任何文件,如Site.css.当我调试我的Index()ActionController时,它直接跳转到View,而不包括像_Layout.cshtml这样的文件.所以我只是得到一个白色背景的视图,没有菜单等.

Global.asax.cs文件包含以下代码:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

    routes.MapRoute(
        "Default2", // Route name
        "{controller}/{action}/{id}/{page}", // URL with parameters
        new { controller = "Survey", action = "DisplayQuestions", id = "", page = "" }
    );
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*eby 46

如果控制器操作中的断点被命中,则路由可能是错误的,但这不是_Layout.cshtml无法加载的原因.

要检查的一些事项:

  • 您的视图是使用View()而不是PartialView()(后者忽略了ViewStart.cshtml,因此忽略了_Layout.cshtml).
  • 您最近移动了_Layout.cshtml /您是否重命名了Shared(或意外创建了SharedController)?
  • 您的视图是否在顶部包含这样的内容,这会停用_Layout.cshtml?

    @{
        Layout = "";
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 您的_ViewStart.cshtml是否仍然存在,以下代码激活_Layout.cshtml?

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 发现!我的“_ViewStart.cshtml”丢失了。 (2认同)