我在asp.net mvc3项目上工作。我正在使用autofac进行DI。 我有一个属性Say
public class MustBeLoggedInAttribute : ActionFilterAttribute
{
private IUserContext Context {get;set;}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!Context.IsLoggedIn)
filterContext.Result = new RedirectResult("/users/logon");
base.OnActionExecuting(filterContext);
}
}
所以我需要将依赖IUserContext注入此属性。 我怎么会得到它。我在actionfiterprovider上找到了代码, 但是找不到任何完整的东西。
帮助将不胜感激。
此致
成员Parminder
答案 0 :(得分:2)
来自Alex Meyer-Gleaves关于Autofac维基的文章:http://code.google.com/p/autofac/wiki/Mvc3Integration#Filter_Attribute_Property_Injection
您需要调用RegisterFilterProvider()
扩展名方法:
using Autofac.Integration.Mvc;
var builder = new ContainerBuilder();
builder.RegisterFilterProvider();
这将根据需要将属性注入过滤器属性(据我所知,您不需要使用Autofac注册属性类型,以便工作。)
希望这有帮助,
尼克