2016-05-14 4 views
1

Можно ли использовать помощников Razor с помощью инъекции зависимостей? Или вызвать некоторые услуги из вида Razor?Помощник бритвы с инъекцией зависимостей

Благодаря

+1

Почему бы не сделать это в контроллере? – Shyju

+0

Я хочу создать прозрачный помощник для изображений. Он создает URL-адрес изображения по размеру. Если изображение с размерами не существует, я хочу его создать. Если логика в контроллере, так что это может ввести в заблуждение, и мне пришлось бы перебирать список продуктов в контроллере (для создания URL-адресов изображений), а затем снова в представлении. – JaSHin

+1

Это определенно должно быть сделано в контроллере, как сказал shyju. Когда вы вернете список и создаете модель представления, вы можете проверить, существует ли изображение и создать его. Создание его в представлении нарушает ваше разделение проблем в представлении, должно просто отображать или отправлять данные обратно контроллеру, а затем разговаривать с базой данных или веб-службой. – Fran

ответ

1

На .NET Ядра, да, они добавили поддержку для него; https://docs.microsoft.com/en-us/aspnet/core/mvc/views/dependency-injection

Например, это позволяет вам делать что-то вроде;

@using System.Threading.Tasks 
@using ViewInjectSample.Model 
@using ViewInjectSample.Model.Services 
@model IEnumerable<ToDoItem> 
@inject StatisticsService StatsService 

Отметьте @inject там внизу. Синтаксис:

@inject <type> <name> 

Вы также должны убедиться, что тип вы хотите, чтобы ввести в вашем ConfigureServices классе в Startup.cs

+1

Гораздо лучше, FWIW Я не спускал вниз – Bugs