[asp.net-mvc] ASP.NET WebForms와 비교하여 ASP.NET MVC 페이지의 ‘페이지 수명주기’는 무엇입니까?

ASP.NET WebForms와 비교하여 ASP.NET MVC 페이지의 ‘페이지 수명주기’는 무엇입니까?

매우 간단한 사이트에있는 기존 페이지를 ASP.NET WebForms에서 쉽게 변환 할 수 있는지 여부를 결정하기 위해이 ‘간단한’질문을 더 잘 이해하려고합니다.

아래 프로세스의 ‘전환’또는 대체 수명주기는 내가 찾고있는 것입니다.

내가 현재하고있는 일 :

(예, 나는 내 질문에 대답 할 수있는 사람이 이미이 모든 것을 알고 있음을 알고 있습니다-나는 단지 ‘라이프 사이클’을 비교하려고 노력하고 있습니다. 그래서 우리가 이미 알고있는 것을 채워서 시작한다고 생각했습니다)

페이지 렌더링 :

  • 기본 템플릿이 포함 된 마스터 페이지가 있습니다
  • 콘텐츠를 넣을 마스터 페이지에서 이름이 지정된 영역을 제공하는 콘텐츠 페이지가 있습니다.
  • 각 콘텐츠 페이지의 이벤트 처리기에서 데이터베이스에서 데이터를로드합니다 (대부분 읽기 전용).
  • 이 데이터를 그리드, 드롭 다운 또는 리피터를 나타내는 ASP.NET 컨트롤에 바인딩합니다. 이 데이터는 모두 생성 된 HTML 내부에 ‘생존’합니다. 그중 일부는 ViewState에 들어 가지 만 너무 많이 들어 가지 않습니다!
  • 페이지의 Image 또는 TextBox 컨트롤과 같은 특정 항목에 속성을 설정하거나 데이터를 바인딩합니다.
  • 재사용 할 수없는 HTML로 렌더링 된 페이지가 클라이언트로 전송됩니다.
  • 페이지에 필요한 것 이외의 ViewState를 사용하지 않으려 고합니다.

클라이언트 쪽 (ASP.NET AJAX를 사용하지 않음) :

  • JQuery와 일부 트릭을 사용하여 페이지에서 컨트롤을 찾고 해당 작업을 수행 할 수 있습니다.
  • 사용자가 드롭 다운에서 선택하면 내 코드 숨김에서 C # 이벤트를 트리거하는 포스트 백이 생성됩니다. 이 이벤트는 데이터베이스로 이동하지만 완전히 새로 생성 된 HTML 페이지가 수행하는 모든 작업이 클라이언트로 다시 전송됩니다.
  • Page.Session을 사용하여 나중에 재사용해야하는 키 값 쌍을 저장할 수 있습니다.

MVC와 함께이 ‘라이프 사이클’은 어떻게 바뀌나요?



답변

언급 한 각 글 머리 기호에 대해 언급하려고합니다.

마스터 페이지는 여전히 MVC에 존재하며 사이트에 일관된 레이아웃을 제공하는 데 사용됩니다. 그다지 새로운 것은 아닙니다.

콘텐츠 페이지는 MVC 세계에서 뷰가됩니다. 여전히 마스터 페이지에 동일한 컨텐츠 영역을 제공합니다.

MVC에서는 webforms의 이벤트 처리를 사용해서는 안됩니다. 대신 Controller 클래스와 해당 액션 메서드는 뷰에 전달되는 “모델”로 데이터로드를 처리합니다.

MVC에서 webform 스타일 데이터 바인딩이 가능하지만 최적의 솔루션이 아니라는 것을 알았습니다. 모델 클래스에 데이터를 배치하고 해당 모델에 직접 액세스 할 수 있도록 뷰를 강력하게 입력하는 것이 좋습니다. 그런 다음 단순히 <%= ViewData.Model.SomeProperty %>구문을 사용하여 데이터에 액세스하고 원하는 위치에 표시하는 것입니다. viewstate에 관해서는, 나는 그것이 존재한다는 것을 잊는 것이 좋습니다.

MVC 사용의 장점 중 하나는 클라이언트에 보내는 HTML을 제어 할 수 있다는 것입니다. 그 힘을 받아들이고 그 통제력을 유지할 수있는 솔루션을 찾으십시오. 웹 폼 컨트롤은 HTML을 숨기려고하므로 필요할 때 HTML을 사용자 정의하기가 더 어려워집니다.

JQuery 또는 다른 강력한 자바 스크립트 라이브러리 중 하나를 강력히 권장합니다. 그러나 그것들을 사용하여 HTML DOM에 직접 액세스하고 webform 컨트롤의 id mangling 문제를 피하십시오.

jquery를 사용하여 클라이언트 측의 드롭 다운 선택에 연결하고 표준 또는 ajax 스타일 요청을 제출할 수 있습니다. 이러한 요청은 기존 페이지를 업데이트하는 데 사용할 수있는 새 페이지, 리디렉션, html 조각 또는 JSON 데이터를 반환 할 수 있습니다.

필요에 따라 asp.net 세션을 사용할 수 있습니다.


답변