I recently made some changes to my MVC 3 project.
When I run it, the Views dont include any files like Site.css. When I debug my Index() ActionController, it jumps directly to the View, withouting including files like _Layout.cshtml. So i just get a View with a white background, no menus etc.
The Global.asax.cs file contains following code:
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 = "" }
);
}
If the breakpoint in your controller action is being hit the routes may be wrong but that's not a reason for _Layout.cshtml to not load.
A few things to check:
Does your view include something like this at the top which would deactivate the _Layout.cshtml?
@{
Layout = "";
}
Does your _ViewStart.cshtml still exist with the following code which activates the _Layout.cshtml?
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Move your "Default2" route up above your "Default" route.
the Default route is more generic so Default2 should be first
also, inside your views make sure that you're specifying the layout to use
@{
Layout = "yourlayoutpage.cshtml"
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With