2016-09-30 86 views
0

與大多數MVC實現一樣,我的所有抽象服務都可以在Controller中使用。好吧,我創建了下面的HTML幫助的擴展,允許嵌入應用程序設置成HTML作爲隱藏輸入:如何從MVC HtmlHelper擴展中獲取當前控制器?

public static MvcHtmlString HiddenForSetting<TResult>(this HtmlHelper htmlHelper, Expression<Func<IMyAppSettings, TResult>> expression, string name = null) 
{ 
    IMyAppSettings settings = null; 

    return MyHtmlHelpers.HiddenForSetting<IMyAppSettings, TResult>(htmlHelper, expression, settings, name); 
} 

的助手提供的設置對象,並允許消費者選擇要嵌入的財產。 IMyAppSettings就是這樣一種服務。所以我想從控制器本身獲得這項服務。有沒有從這個靜態助手擴展方法訪問控制器的方法?

注意:我不需要控制器名稱!我需要控制器實例本身。

+0

您是否在爲您的應用程序使用依賴注入?如果是的話,你是否嘗試'參數注入'給你的助手擴展來獲取'IMyAppSettings'的實例? –

+0

我們的應用程序使用依賴注入。控制器基類提供了一個注入其構造函數的「IMyAppSettings」的實現。我不熟悉參數注入。 – Jordan

回答

1

可以使用得到控制:

htmlHelper.ViewContext.Controller 

這是一個ControllerBase。如果你知道控制器的類型,你可以根據需要施放它。