Представление «Индекс» или его мастер не найдены. - PullRequest
56 голосов
/ 16 февраля 2010
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 area. Вызывается действие контроллера области, но, похоже, он ищет представление в «базовых» видах проекта, а не в папке видов области.

Ответы [ 15 ]

52 голосов
/ 17 сентября 2010

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

например:

context.MapRoute(
        "SomeArea_default",
        "SomeArea/{controller}/{action}/{id}",
        new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
    ).DataTokens.Add("area", "YOURAREANAME");
28 голосов
/ 30 сентября 2012

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

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

  1. Соответствующие имена контроллеров и папок View имеют одинаковые имена.
  2. Соответствующие страницы методов и представлений контроллера должны иметь одинаковые имена.
  3. Если имя вашего метода отличается от имени представления, return view("viewName") в методе.
14 голосов
/ 16 сентября 2015

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

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

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

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

Пример: допустим, мы вызываем метод Index(). Щелкните по нему правой кнопкой мыши. enter image description here

2. Нажмите Add View .. и дайте соответствующее имя. В этом примере имя должно быть Index.

enter image description here

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

10 голосов
/ 07 июня 2010

Проверьте сгенерированный код на MyArea AreaRegistration.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 }
        );
    }
5 голосов
/ 25 октября 2012

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

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

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

4 голосов
/ 16 февраля 2010

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

Кажется, что MvcContrib картограф маршрутизации был неудобен с областью маршрутизации.

3 голосов
/ 16 февраля 2010

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

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

Посмотрите это сообщение от Phil Haack.

2 голосов
/ 05 августа 2016
  1. щелкните правой кнопкой мыши на index() методе с вашего контроллера
  2. затем нажмите goto view

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

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

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

2 голосов
/ 04 ноября 2014

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

1 голос
/ 22 июня 2010

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

...