2017-02-03 18 views
1

我在App_Code中有一個簡單的Asp.net MVC幫助器方法。如何在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核心有一個@inject指令,但這只是正確的髒! (除了視圖本地化) – Luke

+0

@Luke:我甚至會說在執行視圖本地化時,'inject'指令*甚至*髒。 – Steven

相關問題