안녕하세요.
초보 개발자인데, 이 곳에서 좋은 팁들을 많이 알려주셔서 도움을 받고 있습니다.
웹 쪽은 경험이 없다보니 사소한 부분에서도 막히고, 구글링으로도 잘 해결이 되지 않아서 문의 글 남겨드립니다.
아래와 같이 서버컨트롤을 특정 조건에 따라 for 문을 사용하여 여러개를 생성했습니다.
그런데 생성 된 컨트롤들이 모두 lblHistType 이라는 동일한 ID를 가지고 있어서 곤란합니다…ㅠ
예전에 asp에서는 ID 뒤에 #Seq가 붙었던 것 같은데, asp.net은 그렇게 처리가 안 되는건지… 도와주세요!
아니면, 애초에 ID 생성할 때 for 구문 돌리면서 새로운 #Seq를 강제로 붙일 수 있을까요?
<asp:Label ID=“lblHistType” runat=“server” Font-Bold=“true”></asp:Label>
ContentPlaceHolder를 활용하시거나, 데이터 바인딩을 이용하시는 것이 좋아 보입니다. 관련된 내용으로 이 글의 내용을 확인해보시면 좋을 듯 합니다.
그리고 웹 폼의 경우 항상 인지하셔야 할 부분이 있는데, 만들어지는 컨트롤의 상태 정보를 매번 ViewState라는 형태의 BASE64로 인코딩된 데이터로 페이지와 상호작용할 때마다 매번 데이터를 주고 받습니다. 동적 컨트롤을 사용할 경우 ViewState의 크기가 기하급수적으로 불어날 수 있어 브라우저의 렌더링 속도 저하 + 서버 부하 증가가 있을 수 있으니 정말로 동적 컨트롤이 필요한 것인지 꼼꼼히 검토해보시는 것을 권합니다.
안녕하세요! 말씀해주신 문서는 유익하게 잘 봤습니다.
제가 기초 지식이 없어서 그런지, 저 문서의 내용만으로는 이해가 되지 않는 부분들이 많이 있어요.
제가 작성하는 코드에서는
<% for ~~ %> 구문 내에서
<asp 서버컨트롤>을 생성하고 있기 때문에… 이 과정에서 ID를 지정해줘야 하는게 아닐까 싶거든요.
그런데 서버 컨트롤 내에서는 for 구문에서 반복인자로 사용하는 'i’를 활용할 수 없으니, 자동으로 #Seq 설정을 어떤 식으로 해야할 지 잘 모르겠습니다…
제 질문이 조금 막연할 수는 있지만, 파일 첨부가 불가능해서 이렇게 밖에 말씀드리지 못하는 점 죄송합니다.