none
ASP.Net Core общий контроллер и вью в нескольких проектах RRS feed

  • Вопрос

  • Добрый день.

    Появилась задача разнести контроллер справочника на несколько приложений ASP.Net Core. По идеи это должна быть библиотека, которая возвращает частичное представление, которое другие проекты должны будут отображать на своих страницах. Т.е. связка Controller+View, по возможности и часть данных чтоб wwwroot было бросить. Не подскажите пример проекта или где глянуть похожее решение?

    19 июня 2020 г. 12:31

Ответы

Все ответы

  • Контроллер и в обычную библиотеку можно вынести, так как это просто класс. А для cshtml видимо вам нужен Razor Class Library: https://docs.microsoft.com/ru-ru/aspnet/core/razor-pages/ui-class?view=aspnetcore-3.1&tabs=visual-studio
    • Помечено в качестве ответа Liliya Muray 22 июня 2020 г. 8:37
    22 июня 2020 г. 4:24
  • Да, это то что мне нужно. Только не совсем поняла как использовать wwwroot. Не удалось подключить картинку из папки во вью.
    22 июня 2020 г. 8:37
  • Ну, в статье написано, в приложении нужно прописать UseStaticFiles() и статические ресурсы будут доступны по пути _content/{LIBRARY NAME}/.  
    22 июня 2020 г. 9:01
  • Поясню свой вопрос: Когда мы публикуем данный проект, то все ресурсы из папки wwwroot копируются в выходную папку родительского проекта и тогда код во вью

    <img class="container-fluid" src="~/img/s1200.jpg"/>

    отображается корректно, а вот на этапе разработки как это нужно настроить?

    У меня есть в  такой код:

            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
    ...
    Но добавить к нему ".UseStaticWebAssets()" не понимаю как. Так вроде должно находить статические ресурсы без публикации.
    22 июня 2020 г. 10:46
  • "Но добавить к нему ".UseStaticWebAssets()" не понимаю как"

    Попробуйте буквально как написано по ссылке

    startup.cs

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ...
    
        app.UseStaticFiles();
    
        ...
    }

    Program.cs

    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Hosting;
    
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStaticWebAssets();
                    webBuilder.UseStartup<Startup>();
                });
    }

    22 июня 2020 г. 11:23
  • "Но добавить к нему ".UseStaticWebAssets()" не понимаю как"

    Попробуйте буквально как написано по ссылке

    Со startup.cs проблем нет, опубликованный проект отображает статические файлы.

    А в файле Program.cs у меня используется в проекте другой интерфейс и мне соответственно нужно прикручивать это к существующему проекту, а не создавать новые типы проектов.

    22 июня 2020 г. 11:57