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 종속성을 제거 :