Поиск…


замечания

В этом разделе представлен обзор того, что такое asp.net-core-mvc, и почему разработчик может захотеть его использовать.

Следует также упомянуть любые крупные темы в asp.net-core-mvc и ссылки на связанные темы. Поскольку документация для asp.net-core-mvc является новой, вам может потребоваться создать начальные версии этих связанных тем.

Установка или настройка

Установка Visual Studio

Если у вас нет установленной Visual Studio, вы можете скачать бесплатную версию Visual Studio Community Edition здесь . Если вы уже установили его, вы можете перейти к следующему шагу.

Создание приложения ASP.NET Core MVC.

  1. Откройте Visual Studio.
  2. Выберите «Файл»> «Новый проект».
  3. Выберите «Веб» в соответствии с выбранным вами языком в разделе «Шаблоны» слева.
  4. Выберите предпочтительный тип проекта в диалоговом окне.
  5. Необязательно: выберите .NET Framework, на которую вы хотите настроить таргетинг
  6. Назовите свой проект и укажите, хотите ли вы создать решение для проекта.
  7. Нажмите «ОК», чтобы создать проект.

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

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

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

Каждое из описаний самоочевидно. Для этого первого проекта выберите веб-приложение , которое будет содержать все конфигурации по умолчанию, аутентификацию и некоторый существующий контент.

Поскольку это приложение для внедрения и не требует никакой защиты или проверки подлинности, вы можете изменить параметр проверки подлинности на «Нет аутентификации» в правой части диалогового окна и нажмите «ОК», чтобы создать проект .

Затем вы должны увидеть новый проект в обозревателе решений:

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

Нажмите клавишу F5, чтобы запустить приложение и начать сеанс отладки, который запустит приложение в браузере по умолчанию:

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

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

PS: Используется Начало работы с темой asp.net-core из документации asp.net-core .

Добавить промежуточное ПО MVC

Если вы создали пустой проект или у вас еще нет mvc, настроенного в вашем приложении, вы можете добавить зависимость:

"Microsoft.AspNetCore.Mvc": "1.0.1"

В файл project.json разделе "dependencies" .

И зарегистрируйте промежуточное ПО MVC в вашем классе Startup:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMvc();
}

Обратите внимание, что у нас есть как services.AddMvc() и services.AddMvcCore() . Если вы начинаете с asp.net core , или хотите, чтобы он был таким, как вы, вы должны поддерживать его с помощью services.AddMvc() . Но если вам нужен расширенный опыт, вы можете начать с минимального конвейера MVC и добавить функции, чтобы получить настраиваемую инфраструктуру с помощью services.AddMvcCore() . См. Это обсуждение для получения дополнительной информации о AddMvcCore

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvcCore()
        .AddAuthorization()
        .AddJsonFormatters(j => j.Formatting = Formatting.Indented);
}

Теперь вы можете сказать своему разработчику приложений использовать mvc:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    app.UseMvc();
}

или с маршрутизацией по умолчанию:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

Основы инъекции зависимостей

Практически любой контроллер нуждается в некоторых внешних зависимостях для работы. Ниже приведен способ настройки объекта зависимостей (или его фабрики) и передачи его контроллеру. Это поможет сохранить разделение проблем , сохранить код понятным и проверяемым.

Скажем, у нас есть интерфейс и его реализация, которая нуждается в некоторых значениях из config в своем конструкторе:

public interface ISomeDependency
{
    async Task<IEnumerable<string>> GetItemsAsync(string key);
}

public class SomeDependency : ISomeDependency
{
    public SomeDependency(string connectionString)
    {
        ...
    }
    ...
}

Он используется в некоторых классах контроллера:

public class SomeController : Controller
{
    private reanonly ISomeDependency dependency;

    public SomeController(ISomeDependency dependency)
    {
        ...
        this.dependency = dependency;
    }

    ...

    public async Task<IEnumerable<string>> Get(string key) =>
        await dependency.GetItemsAsync(key);
}

Можно вставить эту зависимость в конструктор вызывающих services.AddTransient контроллера Startup.ConfigureServices внутри метода Startup.ConfigureServices :

public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder().
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        ...
        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddTransient(serviceProvider =>
            new MyDependency(Configuration["Data:ConnectionString"]));
    }

    ...
}

Здесь Data:ConnectionString - это путь к настройке в файле appsettings.json :

{
  ...
  },
  "Data": {
    "ConnectionString": "some connection string"
  }
}

Пожизненное управление

Для управления временем жизни инжектируемого объекта наряду с AddTransient еще два варианта: AddSingleton и AddScoped . Последнее означает, что время жизни объекта ограничено HTTP-запросом.

Версии

Официальная дорожная карта @ Github

Версия Объявления Дата выхода
RC1 * 1.0.0-rc1 2015-11-01
RC2 * 1.0.0-RC2 2016-05-16
1.0.0 1.0.0 2016-06-27
1.0.1 1.0.1 2016-09-13
1.0.1 1.0.1 2016-09-13
1,1 1.1.0 Q4 2016 / Q1 2017
1.2 1.2.0 Q1 2017 / Q2 2017

* Ссылки на годовые кварталы (Q1, Q2, Q3, Q4) основаны на календарных



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow