2009-04-01 5 views
5

새로운 ASP .NET MVC 프레임 워크를 배우려고하고 있는데 UserControls를 사용하는 최상의 방법을 알고 싶습니다.ASP .NET MVC 올바른 UserControl 아키텍처

UserControl을 부분으로 렌더링하고 컨트롤러에서 데이터를 전달할 수 있다는 것을 알고 있습니다. 이상적으로는 MVC 규칙을 위반하려는 유혹을 불러 일으키기 때문에 파일 뒤에 코드가없는 것이 합리적이라고 생각합니다.

UserControls가 패턴에 어울리는 지 이해할 수없는 예제를 제공합니다.

나는 (많은 에 StackOverflow에 같은) 최신 태그를 보여줍니다 UserControl이 있습니다. StackOverflow와 달리 I 에있는이 UserControl을 내 모든 페이지에 표시하려고합니다. 내가 컨트롤러에서 QuestionController 이라고 말하면 의 동작을 처리하기위한 것입니다. 보기 및 세부 사항, 내가 QuestionController의 데이터를 가져 와서 다음 UserControl에 전달해야합니까?

내가 다른 컨트롤러를 만드는 경우

는 에 동일한 기능을 최신 태그 다시 부분에 전달할 수 복제 SearchController 그때 내가 할 것이다 말한다. 이것은 다른 컨트롤러가 을 수행하고 있다는 것을 의미하지 않습니다 여분의 것들 그들은 원래 예정입니까?

답변

4

당신의 UserControl을 모든 페이지에 표시되는 경우, 하나 개의 방법이이 OnActionExecuting 메서드를 재정과 논리를 바꾸어 UserControl을위한을 ViewData를 모든 컨트롤러가 파생되는 기본 컨트롤러를 사용하고 생성하는 것입니다 해결하기 그곳에. UserControl이 보급 적이지만 사이트 전체에서 자주 사용되는 경우 ActionFilterAttribute를 확장하고 필터가 필요한 데이터를 생성하도록 할 수 있습니다. 이 특성은 UserControl을 사용하는보기를 생성하는 컨트롤러 나 동작을 꾸미는데 사용될 수 있습니다.

나는 UserControl에 대한 데이터가 호출되는 동작과 독립적이라고 가정합니다. 종속성이있는 경우 로직을 클래스 (또는 전략을 사용하는 클래스)로 푸시하고 각 액션 또는 컨트롤러에서 OnActionExecuting 무시를 통해 데이터 생성을 명시 적으로 만드는 것이 가장 좋습니다.

-1

모델 클래스를 계층 구조에 배치하는 것도 고려해 볼 수 있습니다. 상위 클래스 (또는 상위 클래스 중 하나)에는 퍼베이시브 사용자 정의 컨트롤에 필요한 데이터가 포함됩니다. 그런 다음 이러한 공통적으로 사용되는 데이터를 기본 컨트롤러 클래스에로드 할 수 있습니다.

4

또는 ASP.NET MVC 2를 사용하면 이제 RenderAction을 사용하여 완전히 새로운 컨트롤러 동작을 호출하여 데이터를 가져올 수 있습니다. 이렇게하면 코드가 훨씬 모듈화되고 데이터의 출처가 명확 해집니다.

+0

내가 필요로하는 것 같은데! – Alex

관련 문제