【发布时间】:2012-07-21 15:46:22
【问题描述】:
我正在尝试将依赖项注入到共享布局视图页面中,以避免在使用该布局的每个视图中都必须这样做。
我已经按照 wiki 中的 guidance 将依赖项注入视图,但该属性始终为空。
Autofac 可以将属性注入到作为布局文件的自定义视图页面中吗?
这是我的设置。 自定义视图页面
namespace MyApp
{
using System.Web.Mvc;
public abstract class CustomViewPage : WebViewPage
{
public IHelper Helper { get; set; }
}
}
~/Views/Shared/_Layout.cshtml
@inherits MyApp.CustomViewPage
<!DOCTYPE html>
<html>
...
@if(this.Helper.HasFoo()){@Html.ActionLink("Bar")}
全球注册...
builder.RegisterType<Helper>().AsImplementedInterfaces();
builder.RegisterModelBinderProvider();
builder.RegisterFilterProvider();
builder.RegisterModule(new AutofacWebTypesModule());
builder.RegisterSource(new ViewRegistrationSource());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
使用布局的“子”视图不是从 CustomViewPage 派生的。
【问题讨论】:
-
看来这是Autofac的known issue...
-
这个答案对我来说是一种解决方法:stackoverflow.com/a/14935006/789683
标签: asp.net-mvc dependency-injection asp.net-mvc-4 autofac