Почему мой вид не включает _Layout.cshtml? - PullRequest
17 голосов
/ 14 октября 2011

Недавно я внес некоторые изменения в свой проект MVC 3.

Когда я запускаю его, в Views нет файлов типа Site.css.Когда я отлаживаю свой Index () ActionController, он сразу переходит к представлению, не включая такие файлы, как _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 = "" }
    );
}

Ответы [ 4 ]

44 голосов
/ 14 октября 2011

Если точка останова в действии вашего контроллера попадает в цель, маршруты могут быть неправильными, но это не повод для _Layout.cshtml не загружаться.

Несколько вещей для проверки:

  • Использует ли ваш вид View (), а не PartialView () (последний игнорирует ViewStart.cshtml и, следовательно, _Layout.cshtml).
  • Вы недавно переместили свой _Layout.cshtml / Вы переименовали Shared (или случайно создали SharedController)?
  • Есть ли в вашем представлении что-то подобное вверху, которое могло бы деактивировать_Layout.cshtml?

    @{
        Layout = "";
    }
    
  • Существует ли еще ваш _ViewStart.cshtml со следующим кодом, который активирует _Layout.cshtml?

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
2 голосов
/ 14 октября 2011

Переместите ваш маршрут «Default2» вверх над вашим маршрутом «Default».

Маршрут по умолчанию является более общим, поэтому Default2 должен быть первым

также внутри ваших представлений убедитесь, что вы указываете макет для использования

@{
    Layout = "yourlayoutpage.cshtml"
}
1 голос
/ 14 октября 2011

Звучит так, как будто вы избавились от свойства макета в представлении индекса.

@{
Layout = "~/Views/Shared/_Layout.cshtml"
}
0 голосов
/ 24 июня 2015

Я знаю, что это было решено, но для меня (MVC 5) мне пришлось добавить эту строку кода, прежде чем обычное представление отображало его содержание

public ActionResult Index()
{
    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...