문제

사용자 지정 ASP.NET 컨트롤 개발의 깊이를 탐구하면서 ASP.NET PostBack 모델과 이것이 컨트롤 개발에 미치는 영향에 대해 확실히 이해하게 되었습니다.

ASP.NET에는 컨트롤에 "수명"이 없으므로 페이지를 로드할 때마다 다시 초기화해야 한다는 점을 알고 있습니다.우리는 객체 값/매개변수를 ViewState에 유지함으로써 이 문제를 극복했습니다.

따라서 내가 읽은 많은 기사에서는 PostBack을 사용하지 말 것을 제안합니다. 이렇게 하면 페이지에 상당한 오버헤드가 추가될 수 있기 때문입니다. 나는 그것을 비활성화하는 방법을 찾고 있지 않습니다. 나는 그것을 알고 있습니다.

내가 찾고 있는 것은:

컨트롤을 초기화하기 위해 PostBack 모델을 사용하는 것 외에 어떤 대안이 있습니까?

나는 우리를 안다 ~할 수 있었다 QueryString을 사용하지만 이는 매우 지저분하고 확실히 신뢰할 수 없는 것 같습니다.

이상적으로는 다른 접근 방식의 아키텍처/디자인에 대한 개요와 그에 대한 장단점을 알려주실 수 있습니다.

많은 감사드립니다 ^_^

도움이 되었습니까?

해결책

글쎄, 세션 상태는 ViewState를 완전히 피하려는 경우 처리해야 할 자체적인 문제가 있는 서버 측 솔루션입니다.하지만 사용자 정의 컨트롤에서 ViewState를 사용하는 것은 모두 괜찮고 좋습니다. 저장할 내용을 까다롭게 선택하세요. 선언된 컨트롤 상태의 델타만 저장하고 포스트백에서 얻게 될 내용은 저장하지 마세요(예:DB 호출에서) 등

다른 팁

값을 어딘가에 저장해야 하므로 쿼리 문자열과 숨겨진 양식 필드로 제한됩니다.이를 HTTP와 연관시키면 기본적으로 GET 또는 POST 매개변수입니다.

쿠키를 사용할 수 있을 것 같지만, 그렇게 하면 정말 지저분해질 것입니다.

  1. 세션 컨텍스트에 객체 상태를 저장합니다.이렇게 하면 상태를 유지하는 부담이 클라이언트에서 서버로 옮겨지게 됩니다. 5월 소규모 인트라넷 앱에 적합합니다.Capital-I 인터넷 사이트의 경우 이는 작동하지 않습니다.

  2. AJAX를 사용하여 제어할 수 있습니다.이 경우에는 상태만 변화 다시 게시해야 합니다.여기서는 올바른 프레임워크를 선택하는 것이 중요합니다.보다 http://www.asp.net/ajax/ajaxcontroltoolkit/samples/ 공식 MS 접근 방식의 경우;다른 많은 것들이 가능합니다.

PostBack 모델에 대한 대안을 정말로 찾고 있다면 ASP.NET MVC 프레임워크를 조사해 보시기 바랍니다.WebForms를 최대한 활용하고 MVC에서 모든 작업을 수행하고 싶지만 아쉽게도 레거시 코드는 타르베이비이고 다시 작성하는 것은 거의 답이 되지 않으므로 계속 연결합니다...

아직도 컨트롤에 대해 다소 오해하고 계신 것 같습니다.컨트롤에는 페이지에 동적으로 추가할 때만 설명하는 문제가 있습니다.aspx 코드에서 컨트롤을 미리 선언하면 페이지와 함께 빌드됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top