Как заставить основное приложение asp.net искать файлы просмотра в текущем проекте?

У меня есть два проекта в моем решении. Один (основной) из них является точкой входа в приложение. Другой (api) обрабатывает один из бизнес-процессов, который требует обмена данными в формате JSON в 99 % случаев. Однако в 1% случаев мне нужен полный HTML-ответ, и вот в чем проблема. Я создал контроллер и представление, но кажется, что приложение ищет представление в проекте main.

Я хочу, чтобы он работал со следующей файловой структурой в решении:

/Main/ (and the content of main application) /API/Controllers/TestController.cs (contains definition of Action()) /API/Views/Test/Action.cshtml

Но, похоже, мне нужно скопировать вид из /API/Views/Test/Action.cshtml в /Main/Views/Test/Action.cshtml или /Main/Views/Shared/Action.cshtml. Это разделяет внутреннюю логику моего приложения :(


person Jędrzej Danko    schedule 19.02.2018    source источник
comment
Вы проверили настройки маршрута? Вероятно, конфигурации маршрута заставляют приложение искать представления в основном проекте.   -  person Clint    schedule 19.02.2018
comment
comment
Возможно, не на 100% дубликат, но он разбивает его на достаточное количество деталей, чтобы быть полезным, я думаю.   -  person Clint    schedule 19.02.2018


Ответы (2)


Вы не можете (по крайней мере в настоящее время) совместно использовать представления между проектами ASP.NET Core. В ASP. NET Core 2.1 (в предварительной версии) вы сможете обмениваться представлениями, добавляя их в библиотеку классов, на которую могут ссылаться оба проекта.

Пользовательский интерфейс Razor в библиотеке классов

ASP.NET Core 2.1 упростит создание и включение пользовательского интерфейса на основе Razor в библиотеку и совместное использование его в нескольких проектах. Новый Razor SDK позволит собирать файлы Razor в проект библиотеки классов, который затем можно упаковать в пакет NuGet. Представления и страницы в библиотеках будут автоматически обнаружены и могут быть переопределены приложением. Благодаря интеграции компиляции Razor в сборку время запуска приложения также значительно сокращается, но при этом сохраняется возможность быстрого обновления представлений и страниц Razor во время выполнения в рамках итеративного рабочего процесса разработки.

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

person Chris Pratt    schedule 19.02.2018

Вы можете сохранить свои взгляды с вашей DLL. Просто убедитесь, что при сборке/развертывании скопируйте папку «представления» в корневой каталог.

person akhileshcoer    schedule 19.02.2018