각 탭의 내용을 나타내는 두 개의 컨트롤을 선언하는 C#/ASP.NET .aspx 페이지가 있습니다. 두 개의 컨트롤 중 어떤 것이 활성화되었는지를 결정하기 위해 쿼리 문자열 인수 (예 :? tab = 1)가 필요합니다. 내 문제는 둘 다 초기화 이벤트를 통해 이동하여 자식 컨트롤을 채우므로 CPU 리소스가 낭비되고 응답 시간이 느려진다는 점입니다. 어떤 식 으로든 초기화를 수행하지 않도록 비활성화 할 수 있습니까?어떻게 C# 웹 사용자 컨트롤을 선언하지만 초기화하지 못하나요?
<% if (TabId == 0)
{ %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
else if (TabId == 1)
{ %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
을 그리고 그 부분은 잘 작동 :
내에서 .aspx 페이지는 다음과 같습니다. 나는 그게 < %가 컨트롤이 실제로 선언되지 않았으므로 초기화되지 않았을 것이라고 생각했지만 그게 초기화되지는 않았지만 그렇게하지는 않았지만 ...
스파게티 코드가 필요하다는 데 동의합니다. 오브젝트 지향형으로 유지하려면 로직을 코드 숨김으로 유지해야합니다. – Daniel
이 방법은 잘 작동합니다.주의 사항은 viewstate에 의존하는 것입니다. 동적으로 추가 된 컨트롤에는 Viewstate가 자동으로로드되지 않습니다. –
@Chuck : 내 기억이 맞다면 (웹 양식으로 많은 작업을 한 지 얼마되지 않아) 컨트롤이로드 될 때 실제로 의존합니다. 나는'Page_Load'보다는'Page_Init'에 로딩하는 것이 (대부분의) viewstate 문제를 해결한다고 믿는다. –