如何从MVC HtmlHelper扩展中获取当前控制器?

时间:2016-09-30 17:13:28

标签: asp.net-mvc

与大多数MVC实现一样,我的所有抽象服务都可以在Controller中使用。好吧,我正在创建以下HTML帮助扩展,以允许将应用程序设置作为隐藏输入嵌入到HTML中:

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就是这样的服务。所以我想从控制器本身获得这项服务。有没有办法从这个静态助手扩展方法中访问控制器?

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

1 个答案:

答案 0 :(得分:1)

您可以使用以下方式获取控制器:

htmlHelper.ViewContext.Controller

这是一个ControllerBase。如果你知道控制器的类型,你可以根据需要进行投射。