ASP.NET MVC проект на .NET Core в VS Code. Часть 1 (Создаем проект и Добавляем Контроллер) C#
В этой публикации я надеюсь начать цикл повествований по разработке 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
Теперь добавим в наш проект контроллер.
Для этого ещё раз изменим «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»
На этом пока всё.
Рабочий исходник примера можно скачать здесь:
Скачать файл: sample001s.zip [2 Kb] (cкачиваний: 7)