我最近对我的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 = "" }
);
}
答案 0 :(得分:44)
如果控制器操作中的断点被命中,则路由可能是错误的,但这不是_Layout.cshtml无法加载的原因。
要检查的一些事项:
您的视图是否在顶部包含了类似的内容,这会停用_Layout.cshtml?
@{
Layout = "";
}
您的_ViewStart.cshtml是否仍然存在以下代码,以激活_Layout.cshtml?
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
答案 1 :(得分:2)
将“Default2”路线移到“默认”路线上方。
默认路由更通用,因此Default2应该是第一个
另外,在视图中确保您指定要使用的布局
@{
Layout = "yourlayoutpage.cshtml"
}
答案 2 :(得分:1)
听起来你已经摆脱了索引视图中的布局属性。
@{
Layout = "~/Views/Shared/_Layout.cshtml"
}
答案 3 :(得分:-3)
我知道这已经解决但是对我来说(MVC 5)我必须在常规视图显示其内容之前添加这行代码
public ActionResult Index()
{
return View();
}