Страница макета “~/Views/Shared/_Layout.cshtml” не найдена.

Вопрос или проблема

Страница макета “~/Views/Shared/_Layout.cshtml” не найдена.

Я получил эту ошибку и не могу понять, в чем дело. Я уверен, что файл _layout.cshtml находится в общей папке, и для того, чтобы проверить разные варианты, я переместил его в папку Home, и тогда мне сказали, что файл Views/Home/_Layout.cshtml тоже не удается найти. Теперь я думаю, что проблема в вызове этого файла по какой-то причине.

Я не собираюсь притворяться, что знаю ASP.NET MVC4, поэтому, пожалуйста, когда будете отвечать, объясните это так, как вы бы объяснили кому-то, кто совершенно не знаком с системой. Верите или нет, но эта ошибка произошла из учебника №1 ха-ха.

Вот код, чтобы показать, что я действительно всё сделал правильно:

@{
   ViewBag.Title = "Домашняя страница";
   Layout = "~/Views/Shared/_Layout.cshtml";
}

А вот и картинка местоположения.

введите описание изображения здесь

p.s. Я провел исследование, Google ничего не знает, и есть еще один вопрос здесь, но он был задан в 2008 году с MVC3, который совершенно отличается.

Я использую ASP.NET MVC4 на Azure.

Спасибо.

Если вы переименуете свой проект, вы можете получить эту ошибку. Решение простое.

Уберите тильду (~) -> /View/.... вместо ~/View..., также в вашем файле _Layout уберите тильду из всех ссылок.

Если кого-то это интересует или у кого-то возникла та же проблема. Похоже, что это может быть проблемой сервера (поэтому он работает нормально на локальном хосте) 🙂 Но всё равно, если это случится с вами, сделайте следующее:

  1. дублируйте макет и переименуйте его в Layout2
  2. измените его вызов в ViewStart.cshtml, чтобы правильный макет вызывался для каждой страницы
  3. Перейдите на Azure или к вашему серверу и удалите всё.
  4. воссоздайте свою директорию
  5. Вернитесь в VS и очистите, соберите и опубликуйте

И у вас всё будет в порядке.

Поиск ‘_Layout.cshtml’ в Обозревателе решений (справа). Тогда вы найдете _Layout.cshtml. Щелкните правой кнопкой мыши на файл и выберите ‘Ограничить этим’.

Вот и всё! Все ваши отсутствующие файлы будут видны в папке ‘Shared’. Не знаю, почему именно это происходит.

Вместо:

@{
   ViewBag.Title = "Домашняя страница";
   Layout = "~/Views/Shared/_Layout.cshtml";
}

Попробуйте это:

@{ 
   Layout = null;
}

Просто удалите файл из вашего проекта и воссоздайте его. Если вы посмотрите на папку вашего проекта, вы увидите, что там нет файла Layout.

Если вы испытываете это и уверены, что файл находится в правильном расположении, попробуйте удалить всё с веб-сервера и перенести заново.

Моя ситуация:

  • Использую WebDeploy
  • Удалил файл “_Layout.cshtml” из проекта, так как предыдущий раз; после развертывания код не работал, я осознал свою ошибку, поэтому добавил его обратно и переразвернул – но это не решило проблему.
  • Не было проблем в среде разработки.

В Обозревателе решений, щелкните правой кнопкой мыши на папку Shared, затем Опубликовать Shared.

Ответ или решение

К сожалению, у вас возникла проблема с тем, что файл макета _Layout.cshtml не может быть найден в ASP.NET MVC4. Давайте разберем возможные причины этой проблемы и способы их решения.

Возможные причины

  1. Неверное имя или расположение файла: Убедитесь, что файл действительно называется _Layout.cshtml и находится по пути Views/Shared/. Путь должен быть абсолютно правильным, включая заглавные буквы, так как в некоторых файловых системах они имеют значение.

  2. Синтаксическая ошибка в коде: Ваша запись для задания макета в cshtml должна быть корректной. Например:

    @{
       ViewBag.Title = "Home Page";
       Layout = "~/Views/Shared/_Layout.cshtml";
    }

    Попробуйте временно установить Layout = null;, чтобы исключить возможные проблемы с привязкой:

    @{
       Layout = null;
    }
  3. Проблемы с развертыванием на сервере: Проблема может быть связана с тем, как вы развертываете своё приложение на Azure. В таких случаях, даже если локальная разработка идет хорошо, на сервере могут не быть загружены все файлы.

Решение проблемы

  1. Проверьте файл макета: Убедитесь, что _Layout.cshtml действительно существует в Views/Shared в вашей решении. Вы можете использовать Solution Explorer в Visual Studio для поиска файла и проверки его расположения.

  2. Очистка и повторная публикация:

    • Удалите все файлы с вашего сервера (например, через FTP или панель управления Azure).
    • Воспользуйтесь командой "Clean" в Visual Studio для очистки вашего проекта.
    • Затем создайте новый билд проекта и снова опубликуйте его.
  3. Изменение пути в вызове: Попробуйте изменить путь в вашей переменной Layout, убрав тильду (~). Не всегда это будет правильным, но некоторые серверные конфигурации могут влиять на это.

    Layout = "/Views/Shared/_Layout.cshtml"; // без ~
  4. Дублирование и переименование: Если вы по-прежнему получаете ошибки, попробуйте создать дубликат файла _Layout.cshtml и переименовать его, например, на Layout2.cshtml, а затем измените ссылку в ViewStart.cshtml на новый файл.

  5. Проверка ссылок в макете: Внутри самого файла _Layout.cshtml убедитесь, что все ссылки корректные и не содержат тильды если вы изменили путь.

  6. Выполнение команд для публикации: Находясь в Solution Explorer, щелкните правой кнопкой мыши на папке Shared и выберите опцию Publish Shared, чтобы убедиться, что все файлы, включая макет, будут опубликованы.

Заключение

Проблема, которую вы столкнулись, может иметь разные причины, но следуя вышеуказанным шагам, вы сможете выявить и исправить проблему. Если есть более глубокие вопросы о том, как работает ASP.NET MVC4, не стесняйтесь задавать их. Мы здесь, чтобы помочь вам!

Оцените материал
Добавить комментарий

Капча загружается...