Подтвердить что ты не робот

Вид "Индекс" или его мастер не был найден.

The view 'Index' or its master was not found. The following locations were searched:
~/Views/ControllerName/Index.aspx
~/Views/ControllerName/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx

Я получил эту ошибку при использовании области ASP.NET mvc. Вызывается действие контроллера области, но оно, похоже, ищет представление в представлениях "базового" проекта, а не в папке видов области.

4b9b3361

Ответ 1

Проблема заключалась в том, что я использовал MvcRoute.MappUrl из MvcContrib для маршрутизации context.Routes.

Похоже, что компоновщик маршрутизации MvcContrib был неудобен при маршрутизации области.

Ответ 2

Что вам нужно сделать, это установить токен для имени вашей области:

например:

context.MapRoute(
        "SomeArea_default",
        "SomeArea/{controller}/{action}/{id}",
        new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
    ).DataTokens.Add("area", "YOURAREANAME");

Ответ 3

Эта ошибка возникла из-за того, что имя метода контроллера не совпадает с именем вида.

Если вы щелкните правой кнопкой мыши на свой метод контроллера и выберите "Перейти к просмотру" (Ctrl + M, Ctrl + G), он либо откроет представление (успех), либо пожаловаться на то, что он не смог найти его (что вы видите).

  • Соответствующие имена контроллеров и просмотр имен имеют одинаковые имена.
  • Соответствующие методы контроллера и страницы Views должны иметь одинаковые имена.
  • Если ваше имя метода отличается от имени представления, return view("viewName") в методе.

Ответ 4

Файл Global.asax содержит URL-адрес маршрута. URL-адрес URL по умолчанию.

"{controller}/{action}/{id}"

Итак, попробуйте это.

1. Щелкните правой кнопкой мыши свой метод контроллера, как показано ниже.

Пример: предположим, что мы называем метод Index(). Нажмите на него. введите описание изображения здесь

2. Нажмите "Добавить вид" и укажите соответствующее имя. В этом примере имя должно быть индексом.

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

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

Ответ 5

Проверьте сгенерированный код в MyAreaAreaRegistration.cs и убедитесь, что параметр контроллера установлен на ваш контроллер по умолчанию, иначе контроллер будет вызван ботом по какой-либо причине ASP.NET MVC не будет искать представления в папке области

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "SomeArea_default",
            "SomeArea/{controller}/{action}/{id}",
            new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
        );
    }

Ответ 6

Если эта ошибка возникает только при развертывании на веб-сервере, проблема может заключаться в том, что представления не развертываются правильно.

Пример того, как это может произойти, заключается в том, что для действия сборки для представлений установлено значение "Нет", а не "контент".

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

Ответ 7

Вы, скорее всего, не создали свой собственный механизм просмотра.
Механизм просмотра по умолчанию ищет представления в ~/Views/[Controller]/ и ~/Views/Shared/.

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

Посмотрите этот пост от Phil Haack.

Ответ 8

Это все еще проблема в финальной версии.. Когда вы создаете Area из контекстного меню /Add/Area, визуальная студия не помещает контроллер в последний аргумент метода MapRoute. Вы должны позаботиться об этом, и в моем случае, я должен поместить его вручную каждый раз, когда я создаю новую область.

Ответ 9

У меня была эта проблема сегодня с простым изначально проектом VS 2013 MVC 5, развернутым вручную в моем локальном экземпляре IIS в Windows 8. Оказалось, что используемый пул приложений не имеет надлежащего доступа к приложению (папки и т.д.). После сброса идентификатора моего приложения, он работал нормально.

Ответ 10

  • щелкните правой кнопкой мыши метод index() с вашего контроллера.
  • затем нажмите goto view

если это действие открыть index.cshtml?

Ваша проблема заключается в том, что пул IIS не имеет разрешения на доступ к физическому пути представления.

вы можете проверить его, предоставив разрешение. например: - перейдите в c:\inetpub\wwwroot\yourweb, затем щелкните правой кнопкой мыши на папке yourweb → свойство → безопасность и добавьте имя группы и разрешите полный контроль над вашим сайтом. надеюсь, что это исправить вашу проблему.

Ответ 11

Вы можете получить эту ошибку даже со всеми правильными MapRoutes в вашей области регистрации. Попробуйте добавить эту строку к действию вашего контроллера:

If Not ControllerContext.RouteData.DataTokens.ContainsKey("area") Then
    ControllerContext.RouteData.DataTokens.Add("area", "MyAreaName")
End If

Ответ 12

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

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

Я использовал приведенный ниже код из файла Jquery для отправки данных, а затем загрузил представление из метода действий контроллера.

$.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'}); 

Над кодом jQuery я не упомянул функцию обратного вызова успеха. То, что произошло после завершения сценария обратной связи по методу действий, без маршрутизации к ожидаемому виду, вернулось к стороне JQuery и дало представление не найденную ошибку, как указано выше.

Тогда я дал решение, подобное ниже, и его работа без проблем.

 $.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'},
      function (data) {
 var url = Sys.Url.route('PetDetail', { action: "ReturnRetailOnlySalesItems", controller: "Customers",petKey: '<%: Model.PetKey %>'});
 window.location = url;});   

Примечание.. Я отправил свой запрос в функцию обратного вызова успеха к моему ожидаемому методу действия просмотров. Затем в режиме просмотра найден соответствующий файл с видом области и правильно загружен.

Ответ 13

У меня тоже была эта проблема; Я заметил, что я пропустил включение страницы просмотра в папку, имя которой совпадает с контроллером.

Контроллер: adminController Вид- > адми- > view1.cshtml

(Это был View- > view1.cshtml) (не было папки: Admin)

Ответ 14

Эта ошибка также может возникнуть, если ваш установщик MSI не смог фактически развернуть файл.

В моем случае это произошло из-за того, что я преобразовал файлы .aspx в файлы .cshtml и визуальную студию, считая, что это совершенно новые файлы, и установить действие сборки как ничто, а не содержимое.

Ответ 15

У меня такая же проблема, и угадайте, что.... глядя на структуру csproj xml, я заметил, что Content node (внутри ItemGroup node) был "none"... не уверен почему, но именно по этой причине я получал ту же ошибку, просто отредактировал ее на "Контент" как на других, и она работает.

Надеюсь, что поможет