ASP.NET MVC проект на .NET Core в VS Code. Часть 1 (Создаем проект и Добавляем Контроллер)

.NET Core

В этой публикации я надеюсь начать цикл повествований по разработке ASP.NET MVC приложения на .NET Core без использования Visual Studio. Для разработки приложения я буду использовать VS Code (по сути навороченный текстовый редактор), и больше ничего.

Начну я с создания пустого проекта и последовательного добавления в проект Контроллера, Представления и Модели, с постепенным включением в проект необходимых библиотек.

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

Итак Начнем. Первая публикация будет посвящена созданию ASP.NET Core MVC проекта и добавлению в него Контроллера.

Для начала, если вы этого ещё не сделали, установите .NET Core SDK и (если не хотите писать в блокноте) Visual Studio Code, всё это добро можно взять здесь: .NET Core SDK & Visual Studio Code. Платформу выбирать вам, у меня на Windows.

Создаем на диске папку, и в этой папке из командной строки создаем новый проект командой:

dotnet new


В папке появится 2 файла:

«Program.cs» — Сам проект
using System;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}


«project.json» — Описание и зависимости
{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}


Первым делом добавляем Kerstel в «project.json» (это кросплатформенный Веб сервер).
Для этого надо добавить строчку «Microsoft.AspNetCore.Server.Kestrel»:«1.0.0»
После изменений файл «project.json» будет выглядеть так:
{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        },
      "Microsoft.AspNetCore.Server.Kestrel":"1.0.0"
      },
      "imports": "dnxcore50"
    }
  }
}


Добавляем в наш проект, к двум уже имеющимся, ещё один файл «Startup.cs» с содержимым:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;

namespace MyTest
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            
            app.Run(
                context => {return context.Response.WriteAsync("Моя первая страничка на .NET Core!!!");}
            );
          
          }
    }
}


И изменяем файл «Program.cs»:
using Microsoft.AspNetCore.Hosting;

namespace MyTest
{
    public class Program
    {
        public static void Main(string[] args)
        {
             var host = new WebHostBuilder()
             .UseKestrel()
             .UseStartup<Startup>()
             .Build();

             host.Run();
        }
    }
}


На этом этапе уже можно запустить наш проект, для этого выполняем последовательно из командной строки:
dotnet restore
dotnet run


Открываем браузер и смотрим что получилось по адресу: localhost:5000
ASP.NET Core MVC Example 1

Теперь добавим в наш проект контроллер.

Для этого ещё раз изменим «project.json» добавив «Microsoft.AspNetCore.Mvc»:«1.0.0»:
{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        },
      "Microsoft.AspNetCore.Server.Kestrel":"1.0.0",
      "Microsoft.AspNetCore.Mvc":"1.0.0"
      },
      "imports": "dnxcore50"
    }
  }
}


Добавим в наш проект папку Controllers и создадим в ней файл MyTestController.cs с содержимым:
using Microsoft.AspNetCore.Mvc;

namespace MyTest.Controllers
{
    public class SayHelloController:Controller
    {
        public string Index()
        {
            return "Первое сообщение из Контроллера!!!";
        }

        public string Hello()
        {
            return "Привет мир!!!";
        }
    }
}


Содержимое файла «Startup.cs» изменим следующим образом:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace MyTest
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{Id?}"
                );
            });
        }
    }
}


Мне кажется в последних действиях пояснения излишни, код простой и понятный, включены в основном только необходимые зависимости. В целом ничем не отличается от стандартного ASP.NET MVC.

Выполняем:
dotnet restore
dotnet run


Открываем браузер и смотрим что получилось по адресам: «localhost:5000/SayHello» и «localhost:5000/SayHello/Hello»
ASP.NET Core MVC Example 2

ASP.NET Core MVC Example 3

На этом пока всё.
Рабочий исходник примера можно скачать здесь: Sample001s.zip

Вопросы приветствуются, продолжение здесь: ASP.NET MVC проект на .NET Core в VS Code. Часть 2 (Добавляем Представление)

NET Core MVC ASP.NET VS Code C# programming Cross Platform

Оставить первый комментарий:

NLog добавление логирования в .NET Core WEB приложение

Пример добавления логирования в WEB приложение на .NET Core на основе NLog. Первоначально добавляем (читать далее...)

237  
Авторизация в приложении через Вконтакте VK на C#

Данная публикация написана как простая инструкция для себя, на память, чтобы не забыть. Предложенный (читать далее...)

143  
Работаем с базой данных MySql из .NET Core

В данной публикации мы рассмотрим как подключиться к базе данных MySql из приложения на .Net Core. 1 (читать далее...)

107  
Пример синхронного AJAX запроса на JQuery и .NET Core

В данной публикации приведен пример того как выполнить асинхронный запрос к серверу без перезагрузки (читать далее...)

98  
Класс для транслитерации предложений на Русском по ГОСТ и ISO на C# под .NET Core

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

87