2016-06-22 1 views
-1

내 모든 페이지에서 사용할 저장소가 있습니다.C# MVC 5 상속 할 사용자 지정 컨트롤러 클래스

기본적으로 모든 MVC 컨트롤러는 Controller 클래스에서 상속받습니다. 내 Repository 필드를 정의한 CustomBaseController 클래스를 만들고 CustomBaseController 생성자에서 컨텍스트를 사용하여 repo를 인스턴스화했습니다.

예를 들어 새로운 컨트롤러를 만들고 싶을 때. HomeControllerCustomBaseController에서 상속되며 내 저장소 필드 (db)는 표시되지 않습니다. 여기

나의 새로운 CustomBaseController에서 예입니다 : 내 HomeController에서도

public class CustomBaseController : Controller { 
    private IRepository db; // <-- defined 
    public CustomController() { 
     // here it is initialized 
     db = new DbRepository(new ApplicationDBContext()); 
    } 
} 

그리고 :

public class ProgramController : CustomBaseController 
{ 
    // GET: Program 
    public ActionResult Index() 
    { 
     // db is not accessible here for some reason, 
     // like it wasn't inherited from CustomBaseController 
     var user = db.getUserByID(1); 
     return List(user); 
    } 
... 
+2

그래서 보호 해주세요. –

답변

0

protected 대신 private의 당신의 IRepository 필드를 확인하고는 자식 클래스에서 볼 수 있습니다.

+0

네, 그냥 그걸 알아 차 렸습니다 .-이게 내 방언의 뇌 방귀의 사례 였어. – Reygoch

0

좋아, 문제가 발견되었습니다. 실수로 레포 변수를 비공개로 설정했습니다.