2011-01-12 28 views
0

私のサービスロケータを直接呼び出さずに_ViewStartクラスに依存関係を注入/構築する方法はありますか?asp.net mvc _ViewStart DIフック

おかげ ベン

+0

あなたは正確に何をしようとしていますか? – marcind

+0

レイアウトページを設定するために_viewstart内の設定オブジェクトのインスタンスを取得 –

+1

レイアウトページを設定するだけでよい場合は、View()オーバーロードの1つを使用してコントローラでこれを行うことができます: 'ViewResult View (string viewName、string masterName) 'と' ViewResult View(string viewName、string masterName、object model) 'を返します。 –

答えて

1

私は_ViewStartクラス(System.Web.Mvc.ViewStartPage)は、それらを保持する性質を持っていないとき、あなたの設定を注入する方法を理解していません。

あなたが_ViewStartで設定をフェッチ避けるためにしようとしていると仮定すると、可能な解決策は、あなたの設定のプロパティを持つカスタムViewStartPageクラスを作成し、そこの中からサービスロケータを呼び出すために、次のようになります。

/* CustomViewStart.cs */ 
public class CustomViewStart : System.Web.Mvc.ViewStartPage 
{ 
    public ISettings Settings { get; set; } 

    public CustomViewStart() 
    { 
     // Call service locator here 
     this.Settings = blah 
    } 
} 

はこれを使用するには、あなたがあなたの_ViewStartで基本クラスを設定する必要があります。

@* _ViewStart.cshtml *@ 
@inherits MyTestApp.CustomViewStart 

で、このための基本クラスを設定する方法があるとは思われない(または、確かに私は見つけることができません)あなたがbasePageTypeでできるようにWeb.config :(

+1

それを試して、WebViewPageまたはViewStartPageから派生する必要がある奇妙なエラーが発生しました。 –

関連する問題