2012-05-29 1 views
0

현재 개발중인 웹 사이트에서 동적으로 작성된 양식을 표시 할 수 있습니다.Asp.Net 페이지 렌더링 및 UI 제어 모듈성

form은 사용자가 직접 생성하며 우리가 지원하는 여러 유형 (텍스트 상자, 목록 상자, tickbox, radiobuttonlist 등) 중 하나로 표시 할 수 있습니다. 렌더링 논리는 사용자가 정의한 모든 필드 컬렉션을 반복하는 repeater을 사용합니다.

리피터 내부 (aspx 페이지에서 직접)에는 지원하는 각 유형의 인스턴스가 하나 정의됩니다.

<asp:Repeater ID="fieldRepeater" runat="server"> 
    <ItemTemplate> 
     <asp:TextBox ID="textBox" runat="server" /> 
     <asp:DropDownList ID="dropDownList" runat="server" /> 
     <asp:CheckBox ID="checkBox" runat="server" /> 
     <asp:RadioButtonList ID="radioButtonList" runat="server" /> 
     [...] 
    </ItemTemplate> 
</asp:Repeater> 

로드하는 동안 어떤 컨트롤이 필요한지 파악하고 다른 모든 컨트롤을 숨 깁니다.

웹 기반 개발 세계에 아직 익숙하지 않은이 접근 방식은 나에게 매우 이상한 것처럼 보입니다. 내 직관은 UI를 깨끗하게 유지하고 CodeBehind에 필요한 컨트롤을 정확하게 인스턴스화하고 가시성을 가지고 "재생"을 시작하지 않는 것이 좋지만 현재 접근법에는 몇 가지 확실한 이점이 있습니다.

웹 앱에서 실제로 어떻게 사용합니까? 여기에 몇 가지 모범 사례가 있습니까?

감사합니다.

답변

0

나는 모범 사례가 무엇인지 전혀 몰랐지만 이전 프로젝트에서 비슷한 것을 시도해 보았습니다. 둘 다 작동합니다.

코드 숨김으로 컨트롤을 만들면 특히 포스트 백을 처리해야하는 경우가 발생할 수 있습니다. OnInit에서 컨트롤을 만들어야합니다. 그렇지 않으면 게시 된 폼 값을 가져 오지 않고 viewstate가 채워지지 않습니다. 게시 된 양식 값을 직접 조사하지 않고 값을 알지 못하기 때문에 컨트롤 작성 중 다른 컨트롤의 값을 기반으로하는 경우 복잡하게됩니다.

내가 생각할 수있는 현재 접근법의 유일한 실용적인 단점은 네 가지 컨트롤 (TextBox, DropDownList 등)을 인스턴스화하고 ASP.Net에 의해 서버 측에서 처리해야한다는 것입니다. 이는 약간의 낭비입니다 자원의 그러나 아마 그렇게 중요하지는 않습니다. 어쩌면 볼 프로파일 링을 해보십시오. 나는 그것이 약간 이상하게 보일 것이라는 점에 동의한다. 그러나 그것은 매우 "깨끗하다"고 느끼지 않는다.

웹 개발을 처음 접했을 때 말했듯이, 모든 컨트롤을 포함하고 관련성이없는 것을 숨기는 현재의 접근 방식을 계속 사용하는 것이 좋습니다. 나는 그랬을 때 더 단순 해 보였습니다. 비록 좋지는 않을지라도.

행운을 빈다.