>

MVC 3에서는 사용자 정의 WebViewPages를 작성할 수 있음을 이해합니다. IOC 컨테이너를 통해 생성자 주입을 사용하여 종속성을 주입 할 수 있습니까?

  • 답변 # 1

    브래드 윌슨 (Brad Wilson)의 블로그 게시물에 뷰 삽입에 대한 설명이 있습니다. http://bradwilson.typepad.com/blog/2010/07/service-location-pt3-views.html

    보기에 대한 다른 사람들의 진술은 생성자 주입이 완전히 정확하지는 않습니다. 네 IDependencyResolver  생성자 인수가있는 뷰를 만들 수 있습니다. 그러나 자체보기 엔진을 구현하지 않으면 전혀 도움이되지 않습니다. 면도기와 같은 기존 뷰 엔진에는 매개 변수가없는 생성자가 있어야합니다. 이는 뷰에서 속성 삽입 만 수행 할 수 있음을 의미합니다.

    그러나 다른 사람들이 말했듯이 주입을 볼 수는 없습니다. 뷰는 멍청해야하며 뷰 모델을 HTML로 렌더링하면됩니다. 의존성이 필요한 것은 컨트롤러 나 서비스에서 수행해야합니다.

  • 답변 # 2

    생성자주입은 수행 할 수 없습니다. 하지만 Ninject를 사용하여 이와 같은 작업을 수행 할 수 있습니다.

        공용 추상 클래스 CustomViewBase: WebViewPage여기서 TModel : 클래스
        {
            [주입]
            공개 IFace 얼굴
            {
                도망;
                세트;
            }
        }
    

    Global.asax에서 IDependencyResolver를 설정했다고 가정하면 @Face 속성을 올바르게 초기화해야합니다.하지만한 가지 중요한 경고 : _Layout.cshtml에서 @Face에 액세스 할 수 없습니다 (Brad Wilson에 따르면) 레이아웃이 MVC 외부에서 작동하고 레이아웃에서 액세스하려고하면 @Face가 null이됩니다. 페이지.

    어쨌든 나는 그 견해가 복잡한 논리를 다루지 않아도된다는 점에서 다른 사람들에게 동의한다.

  • 답변 # 3

    예, 가능하지만 실제로는 좋은 생각이 아니라고 생각합니다. 뷰 레벨에 "서비스"가 필요한 이유는 무엇입니까? 주요 MVC 가이드 라인을 기억하십시오.뷰가 멍청해야합니다.실제로 뷰 모델 객체를 HTML로 변환하기위한 일종의 템플릿이어야합니다.

  • 이전 Objective-C Mac 앱에서 Java 라이브러리 사용 및 해당 앱을 Mac App Store에 배치
  • 다음 HTML에서 폴더를 입력으로 사용하는 방법은 무엇입니까?