2

느슨하게 결합 된 구성 요소를 지원하기 위해 Webforms에서 이벤트를 사용할 수있는 방법을 ASP.Net MVC의 어떤 기능으로 대체 할 수 있습니까?ASP.Net MVC - 느슨한 결합을 지원하는 이벤트를 대체하는 것은 무엇입니까?

예를 들어, 웹 양식에 간단한 호출기를 제어 할 :

페이지 번호는 새로운 페이지 번호
  • 이 구독 페이지/제어와 함께 "PageChange"이벤트 떨어져
  • 호출기 화재를 클릭
    1. 이벤트를 수신하고 새 데이터를 가져오고 바인드하기위한 호출을 시작합니다. (단일 페이지/뷰에 대해

      • 느슨한 결합을 같은 매우 복잡한 로직의
      • 구성 요소 재사용 성
      • 분리를 지원하는 유사에 ASP.Net MVC에서 사용할 수있는 도구

    "포털"유형 페이지).

  • +0

    RenderAction (...)은 여기에 친구입니다. – mxmissile

    +3

    Webforms가 "느슨하게 결합 된"것으로 묘사 된 것은 이번이 처음입니다 .... – womp

    +0

    mxmisile, 팁 주셔서 감사합니다. 나는 더 많이 살펴볼 것입니다. Womp - 도움이되지 않습니다. 이벤트는 구성 요소의 느슨한 연결을 만드는 데 사용할 수있는 기술입니다. WebForm은 이벤트를 중심으로 구축됩니다. – James

    답변

    0

    MVC는 대부분 이벤트가 클라이언트가 서버에 지시하려고 시도하는 것과 서버가 실제로 수행하는 것 사이의 불필요한 계층이기 때문에 이벤트를 제거합니다.

    웹 양식의 페이징 예제에서 클라이언트는 버튼을 클릭하고 브라우저는 이벤트/viewstate를 보내고 엔진은 ButtonClicked 이벤트를 발생시킵니다. 이벤트를 검사하고 클라이언트가 페이지를 작성할 것인지 결정한 후 페이징 논리를 실행합니다.

    MVC 패러다임에서 사용자는 페이징 로직을 실행하는 코드에 직접 요청하는 버튼을 클릭합니다. 버튼을 놓을 때 버튼이 어떤 행동을 취해야하는지 알기 때문에 이벤트 발발의 모든 음모를 살펴보아야합니까? 컨트롤러에서 명령을 받으면 확실히 이벤트를 실행할 수 있지만 솔직히 그렇게하는 유스 케이스를 상상할 수는 없습니다.

    두 가지 방법 모두 동일한 작업을 수행하지만 MVC는 복잡성 계층을 제거합니다.

    1

    ASP.NET MVC와 Model-View-Controller는 일반적으로 응용 프로그램을 지원하는 데이터와 코드를 시각적 인 "Presentation-layer"마크 업과 분리하여 유지함으로써 염려스러운 결합과 분리를 지원합니다. 사용자가 볼 수 있습니다.

    올바르게 설계된 MVC의 컨트롤러와 뷰는 재사용 할 수 있으므로 엔티티의 편집 뷰를 수정없이 관련 뷰에 "포함"할 수 있습니다.

    예 : Orders View에는 OrdersDetail 부분보기가 포함될 수 있습니다. 이 부분 뷰는 응용 프로그램 내의 다른 곳에서도 사용 가능한 OrderDetail Edit 뷰로 대체 될 수 있습니다.

    보기와 모델을 분리하면 코드를 프레젠테이션 계층의 컨텍스트에서 분리하여 단위 테스트를보다 효과적이고 덜 복잡하게 만들 수 있습니다. 데이터베이스에서 데이터를 가져 오는 단위 테스트 코드에 System.Web을 참조하지 않아도됩니다.

    +0

    답장을 보내 주셔서 감사합니다. Dave. 그래서 Partial View에 대한 아이디어를 얻었습니다. 나는 아직도 느슨하게 결합 된 구성 요소가 어떻게 만들어 질 수 있는지를 이해하지 못한다. 호출기의 예제를 통해 반복적 인 C# 코드가없는 한 인스턴스의 Orders 및 다른 Orders의 사용자를 페이지하는 데 어떻게 사용할 수 있습니까? 나는 (특히 "자신을 반복하지 말라"는 코딩을 자랑스러워하는 프레임 워크가 있어야 함을 확신합니다.) - 아직 볼 수는 없습니다. – James

    +0

    http://blog.wekeroad.com/2007/을보세요. 12/10/aspnet-mvc-pagedlistt/어떻게 수행 할 수있는 간단한 예제 목록 모델 대신 PagedList 및 PagedList 구현에 포함될 수있는 페이지 수에 대한 논리를 반환 할 수 있습니다. 그렇다면 PagedList를 처리하는 일반적인 부분을 만들 수 있습니다. – Jab

    +0

    감사합니다 Jab - 이것은 MVC의 페이징을 돕는 몇 가지 흥미로운 코드입니다. 그러나 실제로는 페이징 자체가 아니며 느슨하게 결합 된 구성 요소입니다 MVC 프레임 워크 내에서 사용하기 위해 개발할 수 있습니다.이 코드 샘플을 사용해도 현명한 것은 아닙니다 – James

    관련 문제