Использование партиалов в mvc из другого проекта - PullRequest
0 голосов
/ 08 мая 2020

Возможно ли переместить некоторые частичные файлы (* .cs html) в проект основных классов и использовать их в другом проекте mvc?

Может быть, введя или используя что-нибудь в _ViewImports?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Вы можете поместить их в библиотеку классов Razor:

https://docs.microsoft.com/en-us/aspnet/core/razor-pages/ui-class

Представления Razor, страницы, контроллеры, модели страниц, компоненты Razor, Компоненты представления и модели данных могут быть встроены в библиотеку классов Razor (RCL). RCL можно упаковать и использовать повторно. Приложения могут включать RCL и переопределять содержащиеся в нем представления и страницы. Когда представление, частичное представление или страница Razor найдены как в веб-приложении, так и в RCL, разметка Razor (файл .cs html) в веб-приложении имеет приоритет.

Создайте библиотеку классов, содержащую Пользовательский интерфейс Razor

  • В Visual Studio выберите «Создать новый проект».
  • Выберите «Библиотека классов Razor> Далее».
  • Назовите библиотеку (например, «RazorClassLib» ),> Создать. Чтобы избежать конфликта имени файла с созданной библиотекой представлений, убедитесь, что имя библиотеки
    не заканчивается на .Views.
  • Выберите «Поддержка страниц и представлений», если вам необходимо поддерживать представления. По умолчанию поддерживаются только Razor Pages. Выберите «Создать».

В шаблоне библиотеки классов Razor (RCL) по умолчанию используется разработка компонентов Razor. Параметр «Поддержка страниц и представлений» поддерживает страницы и представления.

1 голос
/ 08 мая 2020

Вы можете сделать это, используя Areas. Вы можете найти все о них на странице microsoft docs .

Проект MVC с частичными представлениями, которые вы хотите использовать, требует такой структуры (находится на странице microsoft docs см. ссылку выше):

enter image description here

Итак, допустим, вам нужно частичное представление с именем _TestPartial.cshtml в области Home. Тогда вам понадобится следующая структура:

enter image description here

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

Далее , вам нужна дополнительная конечная точка в вашем startup.cs файле:

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute(
        name: "Home",
        areaName: "Home",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

Наконец, вы можете использовать эту частичную точку в своих представлениях следующим образом:

<div>@await Html.PartialAsync("/Areas/Home/Views/Home/_TestPartial.cshtml")</div>

Теперь вы также можете перенаправить на действия контроллера в этих областях выглядят следующим образом:

return RedirectToAction("Index","Home",new { area = "Home "});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...