2010-01-25 6 views
0

의이 같은 oject 구조 보자 : -> 부 -ASP.NET MVC 컨트롤러 디자인

회사 소개> 사람을

-> 1 의미 : M 관계를

나는 한 지방 컨트롤러가해야하는 이 객체 또는 모든 객체 당 하나의 컨트롤러에 대한 모든 요청을 처리합니까?

각 개체에 대해 일반적인 CRUD 작업이 수행됩니다. 세부 정보 (Department, Person)는 그리드를 사용하여 한 페이지에 표시됩니다.

답변

1

데이터 모델과 컨트롤러 사이에 직접적인 관계가 있다고 생각하지 않습니다. 컨트롤러를 관련 기능의 그룹으로 간주합니다. 필자가 말하고자하는 것은 일반적으로 기능의 큰 논리적 덩어리마다 컨트롤러를 만드는 것입니다. 나는 연락처 MVC 웹 응용 프로그램을 작성한다면 그래서, 난이있을 수 있습니다

  • AccountController (인증 /인증)
  • ContactsController (실제 비즈니스 사례에 대한 , 연락처)
  • AdminController을 (슈퍼 사용자를위한 내가 사용, 같은 테이블이있을 수 있습니다 내 데이터 모델의 응용 프로그램)

을하여 수정, 연락처, 번지 기능 전화 번호 등

1

일반적으로 CRUD 당 하나의 컨트롤러에 하나의 컨트롤러가 있으므로 부서 용 컨트롤러 하나와 사람 용 컨트롤러가 하나씩 있습니다. 왜?

각 DTO 또는 저장소가 있어야합니다. 당신은 저장소가있는 경우 :

public class PersonController : Controller 
{ 
    private IPersonRepository _personRepository; 
    public PersonController(IPersonRepository personRepository) 
    { 
     _personRepository = personRepository; 
    } 
} 

그런 다음 종속성을위한 IoC 컨테이너 (나는 StructureMap를 좋아한다)를 사용합니다.

2

관리자 유형의 경우, 단일 컨트롤러를 사용하거나 동적 데이터를 사용합니다. 그렇지 않으면 내가 예를 들어 동작을 기반으로 고장 내 컨트롤러에 좋아, 객실 예약, 시간 시트 관리 등

2

는 DDD에 따라 - 유일한 회사가 집계 루트의 경우 - 다음 중 하나 (하지만 여전히 얇은) 컨트롤러

1

각 컨트롤러마다 별도의 컨트롤러가 있습니다. 하나의 컨트롤러 (회사와 같은)가 사람들에게 정보를 제공해야한다면 괜찮습니다.

정말 원하는 경우 Render Action. 이를 통해 호출을 다른 컨트롤러로보고 해당 부분을로드 할 수 있습니다.