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