ASP .NET 서버컨트롤 ID 관련 문의

안녕하세요.
초보 개발자인데, 이 곳에서 좋은 팁들을 많이 알려주셔서 도움을 받고 있습니다.
웹 쪽은 경험이 없다보니 사소한 부분에서도 막히고, 구글링으로도 잘 해결이 되지 않아서 문의 글 남겨드립니다.

아래와 같이 서버컨트롤을 특정 조건에 따라 for 문을 사용하여 여러개를 생성했습니다.
그런데 생성 된 컨트롤들이 모두 lblHistType 이라는 동일한 ID를 가지고 있어서 곤란합니다…ㅠ
예전에 asp에서는 ID 뒤에 #Seq가 붙었던 것 같은데, asp.net은 그렇게 처리가 안 되는건지… 도와주세요!

아니면, 애초에 ID 생성할 때 for 구문 돌리면서 새로운 #Seq를 강제로 붙일 수 있을까요?
<asp:Label ID=“lblHistType” runat=“server” Font-Bold=“true”></asp:Label>

2개의 좋아요

ContentPlaceHolder를 활용하시거나, 데이터 바인딩을 이용하시는 것이 좋아 보입니다. 관련된 내용으로 이 글의 내용을 확인해보시면 좋을 듯 합니다.

그리고 웹 폼의 경우 항상 인지하셔야 할 부분이 있는데, 만들어지는 컨트롤의 상태 정보를 매번 ViewState라는 형태의 BASE64로 인코딩된 데이터로 페이지와 상호작용할 때마다 매번 데이터를 주고 받습니다. 동적 컨트롤을 사용할 경우 ViewState의 크기가 기하급수적으로 불어날 수 있어 브라우저의 렌더링 속도 저하 + 서버 부하 증가가 있을 수 있으니 정말로 동적 컨트롤이 필요한 것인지 꼼꼼히 검토해보시는 것을 권합니다.

2개의 좋아요

안녕하세요! 말씀해주신 문서는 유익하게 잘 봤습니다.
제가 기초 지식이 없어서 그런지, 저 문서의 내용만으로는 이해가 되지 않는 부분들이 많이 있어요.

제가 작성하는 코드에서는
<% for ~~ %> 구문 내에서
<asp 서버컨트롤>을 생성하고 있기 때문에… 이 과정에서 ID를 지정해줘야 하는게 아닐까 싶거든요.
그런데 서버 컨트롤 내에서는 for 구문에서 반복인자로 사용하는 'i’를 활용할 수 없으니, 자동으로 #Seq 설정을 어떤 식으로 해야할 지 잘 모르겠습니다…

제 질문이 조금 막연할 수는 있지만, 파일 첨부가 불가능해서 이렇게 밖에 말씀드리지 못하는 점 죄송합니다.

<% for (var i = 0; i < hist_Count; i++) %>
                             <%{ %>
                                    <div class="box-body" id="SoAsList">
                                        <d iv style="float:left; width:80%;">
                                            <ul class="products-list product-list-in-box">
                                                <li>

                                                    <div class="product-info">
                                                        <a class="info-box-text">등록일 : <%=dt_hist.Rows[i][7].ToString().ToString().Substring(0, 4) + "-" + dt_hist.Rows[i][7].ToString().Substring(4, 2) + "-" + dt_hist.Rows[i][7].ToString().Substring(6, 2) %>
                                                        </a>
                                                        <%if(dt_hist.Rows[i][4].ToString() == "1") %>
                                                        <%{ %>
                                                            **<asp:Label ID=“lblHistType” runat=“server” Font-Bold=“true”></asp:Label>**
                                                        <%} %>
                                                        <%else if(dt_hist.Rows[i][4].ToString() == "2") %>
                                                        <%{ %>
                                                            **<asp:Label ID=“lblHistType” runat=“server” Font-Bold=“true”></asp:Label>**
                                                        <%} %>
                                                        <%else if(dt_hist.Rows[i][4].ToString() == "3") %>
                                                        <%{ %>
                                                            **<asp:Label ID=“lblHistType” runat=“server” Font-Bold=“true”></asp:Label>**
                                                        <%} %>
                                                        
                                                        <!--span class="info-box-number"></span-->
                                                    </div>
                                                </li>
                                            </ul>
                                        </div>

                                        <div style="float:left; width:10%; text-align:center">
                                            <ul class="products-list product-list-in-box">
                                                <li>
                                                    <div class="product-img">
                                                        **<asp:ImageButton ID="ImageButton1" runat="server" type="Button" ImageAlign="Left" Width="80%" ImageUrl="~/images/detail.png" OnClick="Test1" />**
                                                    </div>
                                                </li>
                                            </ul>
                                        </div>
                                    </div>
                             <%}%>
1개의 좋아요