2014-04-23 1 views
5

Asp.Net 배경에서 왔고 Asp.Net MVC를 새 프로젝트로 평가하고 있습니다. 큰 프로젝트를 적절하게 구조화하는 방법을 알 수 없습니다.Asp.Net MVC5, 대형 프로젝트 구조화. 지역?

모델/뷰/컨트롤러 아키텍처에 만족하며 현재 작업 영역을 얻으려고 노력 중입니다.

지역 내에 구역을 가질 수 있습니까? dll에 뷰를 넣을 수 있습니까?

여기에는 출발점이 필요합니다. 대규모 MVC 프로젝트를 구조화하는 방법을 보여주는 리소스가 있습니다. 결국 프로젝트에 100+ 개 이상의 뷰가있을 것이라고 가정합니다. 모두 같은 폴더에 저장하고 싶지는 않습니다. 이상적으로 나는 하위 폴더

에게 어떤 도움

감사하고 싶습니다

편집 : 는 내가보기 폴더에 각 컨트롤러의지도는, 내가 원하는 것은 더이

 
Areas 
    Mail 
    Absence 
     SimpleAbsenceController.cs 
     ComplexAbsenceController.cs 
    Overtime 
     SimpleOvertimeController.cs 
     ComplexOvertimeController.cs 
    Etc 

Edit2가 같은 것을 볼 수 있습니다 : 아마 t 메일/부재에 http://www.mystuff.com/SimpleAbsence/Index

/SimpleAbsenceController가

은 기본적으로 우리가 무슨 말을하는지 폴더

+0

내가 이해가 확실하지 않다 자신의 예를 들어 MiniRagnarok에 동일한 질문, 감사 것입니다. Views 폴더에는 각 컨트롤러마다 별도의 폴더가 있어야합니다. 이미 많은 하위 폴더가 있습니다. – MiniRagnarok

+0

영역을 자체 컨트롤러, 모델 및 뷰가있는 하위 폴더로 생각할 수 있습니다. 즉 루트와 구조가 같습니다. 지역 내의 영역을 원하는 이유는 확실하지 않습니다. 가능하다면 확실하지 않습니다! – markpsmith

+0

좋아하는 경로로 길을 올릴 수 있습니다. 경로가 Webforms에서와 같이 프로젝트 구조와 일치 할 필요는 없습니다. (기술적으로 Webforms에는 이제 라우팅이 있으므로 더 이상 일치하지 않아도됩니다.) –

답변

7
나는 그것이 나중에 볼 수있는 동시에 다른 사람을 도와하려고이 정말 초보자의 질문에 다른 사람의 작품을 훼손 느낌이 나는 내 자신의 질문에 대답 싫어

, 그래서 ...

(이 모든 것은 Pro ASP.Net MVC5, 좋은 책을 읽은 것입니다.

하위 폴더 또는 dll 사용과 관련하여 Asp.Net MVC에 얼마나 많은 유연성이 있는지 알고 싶었습니다. 이 답변은 하위 폴더의 질문을 해결합니다.

  1. 당신은 디스크에 폴더의 측면에서,이 컴파일처럼 사상 컨트롤러를 넣을 수 있습니다,하지만 ...

  2. 당신이에 지역에게지도 노선을 사용하여 답변 AreaRegistration.cs 파일은 자동으로 해당 영역의 네임 스페이스에 대한 경로를 으로 제한합니다.예를 들어 컨트롤러를 영역으로 이동하면 Url과 같은 네임 스페이스 또는 메서드를 변경해야합니다. 작업이 실패합니다.

  3. Views는 그대로 있어야하므로 프레드라는 컨트롤러에는 다음 구조가 있어야합니다. 당신은 당신의 자신의 라우팅 시스템을 사용하여이 모든 것을 해결할 수

 
View 
- Fred 
    - Action1 
    - Action2 
    - etc 

, 당신은 아마 사용자 정의 경로와 네임 스페이스 문제를 해결 할 수 있지만 내 생각은 시스템까지 작동한다 초보자과 같다 당신은 규칙 위반의 결과를 완전히 이해할만큼 충분히 알고 있습니다.

이렇게하면 하나의 폴더에 수백 개의보기가 모두 포함 된 대규모 프로젝트를 만들 수 있습니다. 컨트롤러가 하위 폴더에있을 수 있고보기에서 직접 컨트롤러로 매핑 할 수있는 것처럼 나쁘지는 않습니다.

라우팅 시스템에도 유연성이 있으므로 컨트롤러가 디스크에 상관없이 원하는 URL을 가질 수 있습니다!

이, 이러한 Html.ActionLink 또는 링크를 직접 반대 Url.Action (또는 equivilents)입니다 사용해야합니다 경우

routes.MapRoute("NewRoute", "App/Do{action}", new { controller = "Home" }); 

NB 필요한 변경하지
http://www.example.com/Home/Something-
http://www.example.com/App/DoSomething에서이 노선지도 라우팅을 기반으로 올바른 URL을 생성 할만큼 충분히 똑똑합니다. 내가 말하는대로

는 완전 초보자 문제지만 확실히 다른 사람들이 실제 생활 프로젝트

+0

MVC5에서 영역을 사용했는지 여부가 확실하지 않습니다. 조회수 만 사용한 것 같습니다. 지역 피하는 것이 좋습니다? 나는 커스텀 라우팅이나 디폴트 MVC 동작을 바꾸는 것을 원하지 않는다. 즉, 간단하게 유지하고 싶다. 감사. – John

+0

나는 치아 문제를 극복하고 나면 일하기에 충분히 쉬운 지역을 사용했다. 권장 사항. dll에 뷰를 넣는 것을 살펴 보았습니다.하지만 프로젝트가 작동하지 않으면 프로젝트가 방대하지 않으면 그 경로를 따르지 않을 것입니다. – tony

+0

# 2 (네임 스페이스) 덕분에 MVC4에서 사이트를 옮기는 문제를 해결할 수있었습니다. 감사합니다. –

2

에 내 프로젝트를 구조화하는 방법을 원하는 : 나는에서지도 할 수있는 자신이, 라우팅 문제의 더 여기는 매우 의견을 기반으로합니다. 컨트롤러에 모든 객체를 매핑하여 많은 컨트롤러를 갖는 것을 선호하는 사람들을 보았습니다. 또한 수많은 조회수를 선호하는 사람들을 보았습니다. 그래서 우리의 예는 우리 팀이하기로 결정한 것이며 샘플 튜토리얼에서 볼 수있는 것과 반드시 ​​동일하지는 않습니다.

예를 들어 200+보기가있는 프로젝트를 수행하십시오. 이 사이트는 경매 및 소매 사이트입니다.

Controllers 
    AccountController.cs 
    AdminController.cs 
    AuctionController.cs 
    HomeController.cs 
    PhotoController.cs 
    StoreController.cs 
    SupportController.cs 

Views 
    Account 
     DisplayTemplates 
     EditorTemplates 
      ChangePassword.cshtml 
     _Favorites.cshtml 
     Settings.cshtml 
    Admin 
    Auction 
    Home 
    Photo 
    Shared 
    Store 
    Support 

우리는 모든 부분보기의 이름 앞에 밑줄을 사용합니다. 우리는 또한 DisplayTemplates와 EditorTemplates를 활용합니다. 이 모든 것이 실제로 우리를 분리시키는 데 도움이됩니다. 우리의 컨트롤러는 역할이나 기능에 의해 분리되어 있음을 알 수 있습니다. 우리의 모든 논리가 실제로 모델에 있기 때문에 우리는 컨트롤러 내에 많은 ActionResults가 있다는 사실에 결코 귀찮지 않았습니다.

+0

만약 내가 틀렸을 지 모르겠지만 100 개의 웹 페이지를 가정하면 각기 다른 동작을하는 페이지 당 1 개의 컨트롤러가있을 것입니다. 그러면 100 개의 View 폴더와 그 폴더에있는 각 동작의 컨트롤러 당 1 개가 생깁니다. 해당 폴더를 더 이상 그룹화 할 수 없습니까? – tony

+0

@tony 페이지 당 컨트롤러가 하나도 없습니다. 우리는 역할이나 기능마다 하나의 컨트롤러가 있습니다. 내 예제의 각 컨트롤러에는 ~ 30 Views가 있습니다. 조회수와 페이지 수는 매우 다릅니다. – MiniRagnarok

+0

@tony 더 많은 것을 혼란스럽게하기 위해 포토 컨트롤러에 대한 뷰는 없으며 부분 뷰만 있습니다. 따라서 해당 컨트롤러에는 0 페이지가 있습니다. – MiniRagnarok