相关疑难解决方法(0)

HtmlHelper 扩展方法中的依赖注入?

我想将属性渲染器实现为处理程序。我在应用程序中使用 Autofac 作为 DI 容器。如何在不使用全局可访问容器(服务位置)的情况下获取在 HtmlHelper 扩展中实现 IPropertyHandler 的对象?是否可以在 Autofac 中注册自己的 HtmlHelper?也许MVC框架提供了另一种方式?

public static class HtmlHelperExtensions {
    public static MvcHtmlString Editor(this HtmlHelper html, object model) {
        return new Renderer(new List<IPropertyHandler>() /*Where to get these objects?*/ ).Render(html, model);
    }
}

public class Renderer {
    private readonly ICollection<IPropertyHandler> _propertyRenderers;

    public Renderer(ICollection<IPropertyHandler> propertyRenderers) {
        _propertyRenderers = propertyRenderers;
    }

    public MvcHtmlString Render(HtmlHelper html, object model) {
        var result = "";
        foreach(var prop in model.GetType().GetProperties()) {
            var renderers = _propertyRenderers.OrderBy(b => b.Order);
            //impl
        }
        return …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dependency-injection autofac asp.net-mvc-5

5
推荐指数
1
解决办法
2898
查看次数