Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
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"); } }
И вначале необходимо сопоставить зависимости в классе Startup. Изменим его метод ConfigureServices()
следующим образом:
public void ConfigureServices(IServiceCollection services) { services.AddTransient<ITimeService, SimpleTimeService>(); services.AddControllersWithViews(); }
И далее мы можем использовать зависимости в представлении. Например, изменим какое-нибудь представление:
@inject HelloMvcApp.Services.ITimeService Timer <h2>Текущее время: @Timer.GetTime()</h2>
Директива @inject принимает два параметра: первый параметр представляет тип, а второй - название переменной этого типа. И после этого мы можем использовать переменную: