MVC 3에서는 맞춤 WebViewPages를 만들 수 있음을 알고 있습니다. 생성자 삽입을 사용하여 IOC 컨테이너를 통해 종속성을 주입 할 수 있습니까?IOC 컨테이너를 사용하여 사용자 정의 WebViewPage의 생성자에 종속성을 주입 할 수 있습니까?
답변
브래드 윌슨 http://bradwilson.typepad.com/blog/2010/07/service-location-pt3-views.html
전망이 완전히 정확하지 생성자 주입을 허용 다른 사람의 진술에 의해 블로그 포스트에서보기 분사에 대한 expample 있습니다. 예 IDependencyResolver
을 사용하면 생성자 인수가있는 뷰를 만들 수 있습니다. 그러나 자신의 뷰 엔진을 구현하지 않는다면 전혀 도움이되지 않을 것입니다. 면도기 같은 기존 뷰 엔진에는 매개 변수없는 생성자가 필요합니다. 즉, 뷰를 통해 속성 삽입 만 수행 할 수 있습니다.
그러나 다른 사람들은 당신이보기 주사를해서는 안된다고 말했기 때문에. 뷰는 멍청한 상태 여야하며 뷰 모델을 HTML로 렌더링하면됩니다. 종속성이 필요한 모든 것은 컨트롤러 또는 서비스에서 수행되어야합니다.
예, 가능하지만 실제로는 좋지 않다고 생각합니다. 왜 뷰 수준에서 "서비스"가 필요합니까? 주요 MVC 지침 - 보기가 바보 같아야한다는 것을 기억하십시오. 실제로 뷰 모델 객체를 HTML로 변환하는 템플릿 일뿐입니다.
생성자 주입을 수행 할 수 없습니다. 하지만 당신은 Ninject에, 말하자면,이 같은 것을 수행 할 수 있습니다
public abstract class CustomViewBase<TModel> : WebViewPage<TModel> where TModel : class { [Inject] public IFace Face { get; set; } }
을 그리고 당신은 당신이 제대로 초기화 @Face 속성을 가지고 있어야의 Global.asax에 IDependencyResolver을 설정 한 가정 할. 그러나 중요한주의 사항 : 레이아웃 페이지에서 레이아웃에 액세스하려고하면 (Brad Wilson에 따르면) 레이아웃이 MVC 외부에서 작동하고 @Face가 null이되므로 _Layout.cshtml에서 @Face에 액세스하지 못할 수 있습니다.
어떤 경우 든 복잡한 논리를 다룰 필요가 없다는 점에서 다른 사람들과 동의합니다.
이것은 굉장합니다! Ninject로 그 일을 할 수 있다는 것을 몰랐습니다. –
Ninject 일 필요는 없습니다. Autofac과 다른 사람들은 데코레이터가 필요없이 똑같은 일을 할 것입니다. –
상속 된 페이지에서 잘 작동했습니다. 하지만 MVC에서 레이아웃 (마스터 페이지) 내부에 동일한 주입 클래스 메소드에 액세스하기위한 솔루션은 무엇입니까? –
- 1. IoC 컨테이너를 사용하여 런타임 값이 필요한 종속성을 만들 수 있습니까?
- 2. 생성 된 인스턴스에 Spring.NET을 사용하여 종속성을 주입 할 수 있습니까?
- 3. Interface Builder를 사용하여 여러 nib에 종속성을 주입 할 수 있습니까?
- 4. IoC, 컨테이너를 어디에 두겠습니까?
- 5. 런타임시 IOC 컨테이너를 사용하여 클래스 초기화 확인하기
- 6. IoC 컨테이너를 사용하기위한 적절한 상황?
- 7. IoC-MEF 주입 문제
- 8. 코드에서 IoC 컨테이너를 구성 할 때의 영향
- 9. ASP.NET MVC 및 IoC - 체인 주입
- 10. IOC 컨테이너를 사용하기위한 장단점은 무엇입니까?
- 11. IoC 컨테이너를 레거시 코드로 소개하기
- 12. 사용자 정의 컨트롤에 종속성을 주입하는 방법
- 13. IOC 컨테이너를 통해 무엇을 만들어야합니까?
- 14. WCF의 사용자 정의 UserNamePasswordValidator에 종속성을 주입하는 방법은 무엇입니까?
- 15. NLog : 사용자 지정 대상에 대한 종속성 주입
- 16. IoC 컨테이너를 사용할 때 객체를 전달하는 방법
- 17. MbUnit에서 IOC 컨테이너를 중앙에서 초기화하는 방법은 무엇입니까?
- 18. IoC 컨테이너를 사용하는 오버로드 메서드가 있음
- 19. J2ME 친화적 인 IoC 컨테이너를 찾아야합니다!
- 20. IOC 용기는 언제 사용합니까?
- 21. IOC 프레임 워크에서 생성자에 인수를 전달하는 방법
- 22. IoC 의존성 Ajax에서 클래스를 결정하는 주입
- 23. ASP.NET 사용자 정의 컨트롤 생성자에 추가
- 24. Caliburn.Micro activateItem 및 IWindowManager의 IOC 주입
- 25. 의존성 주입 : aspx 페이지에 사용자 컨트롤 삽입하기
- 26. 사용자 정의 유형의 컨테이너를 어디에 둘까요?
- 27. PropertyGrid - 사용자 정의 할 수 있습니까?
- 28. IoC 컨테이너를 사용하여 런타임에 중첩 된 종속성 해결 패턴
- 29. 실버 라이트의 IOC 컨테이너를 사용하여 동적으로 어셈블리를로드합니다. 이것이 가능한가?
- 30. IOC 컨테이너를 사용할 때주의해야 할 것들 (함정)은 무엇입니까?
보기의 속성으로 사용할 수있는 사용자 지정 권한이 있으면 어떻게됩니까? (필요한 권한없이 면도기에서 렌더링해서는 안되는 특정 부분을 지정) –