ASP.NET MVC 프로젝트를 시작하고 경험이 전반적으로 좋았지 만 컨트롤러가 엉망인 스파게티에 만족하지는 못했습니다. 나는 온라인 (CodeCampServer, 등등 ...)을 둘러 보았고 컨트롤러 메소드가 SRP (단일 책임 원칙)를 거의 일관되게 위반하는 동일한 문제를 겪고있는 것처럼 보인다. 요청이있을 경우 단순히 뷰를 렌더링하는 컨트롤러 메소드 GET하지만 POST이면 모델을 업데이트합니다. 이제는 컨트롤러 메소드가 애플리케이션 전반에 걸쳐 여러 논리적 라우트를 담당하고 있습니다. 즉, 폼에서 클릭 된 버튼을 확인하고 이에 따라 작동합니다. JavaScript를 사용하여 각 단추를 다른 양식 작업으로 리디렉션 할 수 있지만 뭔가가 올바르게 느껴지지 않습니다 ... 다른 큰 문제는 마법 문자열의 확산입니다 - ViewData [ "foo"] = blah; 간단히 말해서 컨트롤러 로직을 어떻게 구성합니까? 뷰 당 하나의 거대한 모델 객체? 작은 컨트롤러 메소드와 자바 스크립트가 많이 라우터입니까? 내 목표는 유지 보수 가능한 코드입니다. 기능이 쌓여서 미끄러운 경사면 아래로 미끄러지기 시작합니다. ...ASP.NET MVC : 컨트롤러 구성
9
A
답변
8
0
다른 사람들이이 문제를 어떻게 처리합니까? 나는 모델 폴더의 뒤죽박죽을 검토하는 데 몇 시간을 보냈다. 나는 폴더를 만드는 것이 시각적 인 혼란을 줄이는데 도움이된다는 것을 알아 냈다. 일치하는 네임 스페이스를 사용하면 많은 도움이된다.
하지만 현재 내 컨트롤러는 모노리스입니다. 문제는 내가 프로젝트에서이 시점을 배우는 데 집중 해왔다는 것이다.
MVC에서 좋은 핸들을 얻었으므로 복잡성을 검토하고 컨트롤러를보다 명료하고 깨끗한 기능으로 수정하는 것이 좋습니다.
다른 컨트롤러가 컨트롤러를 깨고 하위 컨트롤러에 있습니까? (그러한 것이 있다면)
관련 문제
- 1. Asp.net MVC 구성 Html.ActionLink 컨트롤러/방법
- 2. ASP.NET MVC 컨트롤러
- 3. 어떻게 asp.net-MVC 컨트롤러
- 4. ASP.NET MVC 컨트롤러 디자인
- 5. ASP.NET MVC : 컨트롤러 생성자
- 6. ASP.NET MVC 컨트롤러 분할
- 7. 나는 ASP.NET MVC 컨트롤러
- 8. ASP.NET MVC 컨트롤러 수명주기
- 9. 지방 ASP.NET MVC 컨트롤러
- 10. IDisposable ASP.net MVC 컨트롤러
- 11. Asp.net MVC 상속 컨트롤러
- 12. JavaScript에서 asp.net mvc 컨트롤러
- 13. ASP.NET MVC - 컨트롤러 결합?
- 14. Asp.Net MVC - 모든 컨트롤러
- 15. ASP.NET MVC 컨트롤러 디자인
- 16. controlle에서 ASP.NET MVC 컨트롤러
- 17. asp.net mvc 일반 컨트롤러
- 18. ASP.NET MVC 구성 질문
- 19. Asp.net Mvc 컨트롤러 이름하는 방법?
- 20. ASP.net MVC 컨트롤러 - 생성자 사용
- 21. asp.net mvc -보기 및 컨트롤러
- 22. 마스터보기에서 ASP.NET MVC 컨트롤러 찾기
- 23. ASP.NET MVC 3 _Layout.cshtml 컨트롤러
- 24. asp.net mvc 컨트롤러 작업 테스트
- 25. ASP.NET MVC 2.0 : 공유보기 컨트롤러
- 26. ASP.NET MVC 컨트롤러 단위 테스트
- 27. Asp.Net Mvc 컨트롤러 정적 생성자
- 28. 별도의 어셈블리와 Castle Windsor의 ASP.NET MVC 컨트롤러
- 29. ASP.NET MVC : ViewModels 구성 규칙
- 30. ASP.NET MVC 구성 관리자 오류
컨트롤러를 코딩하는 속임수는 '각 동작 방법이 20 줄 또는 30 줄 또는 비교적 적은 수를 넘는다면 어떻게 줄일 수 있을까요?'라고 말하면됩니다. 기본적으로 DRY 상태를 유지하고 현재 수행중인 작업을 다시 생각해보고 해당 논리를 적절한 SERVICE 계층으로 옮겨 재사용 할 수 있습니다. –
또한 ROB CONERY의 StoreFront MVC Starter Kit를 다운로드하고 자신의 솔루션을 계층화 한 방법을 확인하십시오.> 매우 멋진 awesomesauce. (구글, 나는이 늦은 (early ?!) 아침에 링크를 찾는 것을 귀찮게 할 수 없다. .. hth! –