2017-02-03 14 views
1

У меня есть простой вспомогательный метод ASPP MVC в App_Code.Как использовать простой инжектор в вспомогательном методе Asp.Net MVC

@helper ApprovedStatus(TimeWorkedEntry entry) 
{ 
    if (!entry.Authorised) 
    { 
    var approvers = <<get list of approvers from service here >> 

    <a tabindex="0" 
     role="button" 
     class="exclamation" 
     data-html="true" 
     data-toggle="popover" 
     data-trigger="focus" 
     title="<b>Not yet approved</b>" 
     data-content="@approvers"> 
     ! 
    </a> 
} 
} 

Мои услуги обычно вводятся в контроллеры в моем приложении с помощью простого инжектора.

То, что я не могу тренировать, - это как получить экземпляр моих услуг, введенных в вспомогательный метод. Что мне не хватает?

+0

Вы не должны. Вы должны передавать значения в свое представление, добавляя значения в свою модель просмотра в своем контроллере. – Luke

ответ

1

Вам ничего не хватает. Представления должны быть немыми и особенно не иметь никакой логики или вызвать какие-либо службы. Это то, что должно быть в контроллере.

Так что в вашем случае контроллер должен передать список утверждений на вид через модель представления. Представление может передать эту информацию методу помощника.

Сохраняет код в чистоте, простоте и проверке.

+1

Doh! конечно, не уверен, почему я подумал, что мне нужно было ввести его туда, подумайте, что я забыл, что это просто взгляд! спасибо – Lobsterpants

+0

ASP.NET Core имеет @inject директиву, но это просто вниз грязно! (За исключением локализации взгляда) – Luke

+0

@ Luke: Я бы даже сказал, что директива 'inject' * даже * грязна при выполнении локализации взглядов. – Steven