asp.net MVCでは、コントローラとの依存性注入は簡単で簡単です。さて、私は、ヘルパーを使ってビューからロジックの大部分を取り除きたいと思います。問題は、これらのヘルパーが注入されたオブジェクトのいくつかを使用することです。ASP.NET MVC依存性注入とヘルパー
は私の例を書いてみましょう:
public interface ISessionData
{
List<string> IdList {get;}
}
public MyController : Controller
{
public MyController(ISessionData sessionData)
{
...
}
}
セッションデータをコントローラに注入されます。ここまでは順調ですね。しかし、今私はヘルパーを持っています。
public class MyHelper
{
private readonly ISessionData sessionData;
public MyHelper(ISessionData sessionData)
{
this.sessionData = sessionData;
}
public bool CheckSomethingExistsInSession(string id)
{
return sessionData.IdList.Any(x => x.Id.Equals(id));
}
}
ここではどうなっていますか?私はMyHelper
をビューに注入したいと思います。私が見ることができる唯一の方法は、このヘルパーをモデルに追加し、毎回見るためにそれを渡すことです。他のアイデア?
ViewData["Session"] = sessionData.IdList.ToList();
とヘルパーからISessionDataの依存関係を削除します。