Внедрение зависимостей в представления

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7

Последнее обновление: 19.11.2019

ASP.NET MVC Core поддерживает внедрение зависимостей в представления. За внедрение зависимостей в представление отвечает директива @inject.

Допустим, у нас в проекте есть папка Services, в которой есть интерфейс ITimeService:

public interface ITimeService
{
	string GetTime();
}

И пусть в этой же папке находится класс SimpleTimeService, который реализует иданный интерфейс:

public class SimpleTimeService : ITimeService
{
	public string GetTime()
	{
		return System.DateTime.Now.ToString("hh:mm:ss");
	}
}
Внедрение зависимостей в представления в ASP.NET Core

И вначале необходимо сопоставить зависимости в классе Startup. Изменим его метод ConfigureServices() следующим образом:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<ITimeService, SimpleTimeService>();
	services.AddControllersWithViews();
}

И далее мы можем использовать зависимости в представлении. Например, изменим какое-нибудь представление:

@inject HelloMvcApp.Services.ITimeService Timer
<h2>Текущее время: @Timer.GetTime()</h2>

Директива @inject принимает два параметра: первый параметр представляет тип, а второй - название переменной этого типа. И после этого мы можем использовать переменную:

Dependency Injection in Views in ASP.NET Core
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850