1

我在asp.net mvc3项目上工作。我正在使用autofac进行DI。 我有一个属性说autofac mvc3属性注入

public class MustBeLoggedInAttribute : ActionFilterAttribute 
{ 
    private IUserContext Context {get;set;} 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (!Context.IsLoggedIn) 
      filterContext.Result = new RedirectResult("https://stackoverflow.com/users/logon"); 
     base.OnActionExecuting(filterContext); 
    } 

} 

所以我需要我的依赖IUserContext注入到这个属性。 我将如何实现它。我发现代码在这里和那里actionfiterprovider, 但无法找到任何完整的。

帮助将不胜感激。

问候

成员Parminder

+0

的'AuthorizeAttribute'做了你想做的事,也没有地方'Autofac'注入的属性创建过程特性。 – Eranga

+0

Eranga - AuthorizeAttribute适用于基本授权,但在基本任何事情之后都会落空。 – Phill

+0

你们没有明白这一点。我在询问有关注射剂的信息,可以用于其他目的。这里的代码只是一个例子。 – Parminder

回答

2

从上Autofac维基亚历克斯·迈尔Gleaves'写了:http://code.google.com/p/autofac/wiki/Mvc3Integration#Filter_Attribute_Property_Injection

你需要调用RegisterFilterProvider()扩展方法:

using Autofac.Integration.Mvc; 

var builder = new ContainerBuilder(); 
builder.RegisterFilterProvider(); 

这会根据需要将属性注入到过滤器属性中(据我所知,您不需要注册属性类型wi日Autofac为此工作。)

希望这有助于

尼克

+0

嗨尼古拉斯,谢谢你的回复。我无法找到本例中给出的builder.RegisterControllers和builder.RegisterFilterProvider方法。你能建议哪里可能是问题。 – Parminder

+0

神奇的尼古拉斯,我忘了使用Autofac.Integration.Mvc;谢了哥们。 – Parminder