与大多数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
就是这样的服务。所以我想从控制器本身获得这项服务。有没有办法从这个静态助手扩展方法中访问控制器?
注意:我不需要控制器名称!我需要控制器实例本身。
答案 0 :(得分:1)
您可以使用以下方式获取控制器:
htmlHelper.ViewContext.Controller
这是一个ControllerBase
。如果你知道控制器的类型,你可以根据需要进行投射。