2017-12-21 74 views
1

TextBoxes 컨트롤을 데이터베이스에있는 항목을 기반으로 동적으로 추가하려고합니다. 이것은 내 asp:PlaceHolder.aspx 페이지asp : TextBox가 ASP 내부에서 작동하지 않습니다. 자리 표시 자 C#

<asp:PlaceHolder ID="PlaceHolderHTML" runat="server"></asp:PlaceHolder> 

이며, 현재 C# 코드에서 나는 동적 HTML을 만들려고하고 있고 그 HTML이 asp:PlaceHolder에 렌더링합니다.

이 내 C# 코드입니다 :

StringBuilder data = new StringBuilder(); 
foreach (SPListItem item in collitem) 
{ 
data.Append(@" 
     <tr> 
      <th class='accordionSection esEmplCardSectionHeader'> 
       <span id='lblSectionName'> 
        <asp:TextBox ID='TextBox" + item["ID"].ToString() + @"' runat='server'></asp:TextBox> 
       </span> 
      </th>    
     </tr>   
} 

PlaceHolderHTML.Controls.Add(new Literal { Text = data.ToString() }); 

하지만 브라우저에서 TextBox 컨트롤

을 표시되지 않습니다. 나는 다음과 같은 결과보고 있어요 요소를 텍스트 상자를 inpect 경우 : enter image description here

그래서

asp:PlaceHolder에 전송되는 HTML 내부의 textbox를 브라우저가 표시되고 ASP를 컨트롤로 브라우저 아무것도 그것을 알고, 그래서 어떻게되지 이 문제를 해결하려면?

+0

[서버 측 컨트롤을 리터럴에 삽입하는 방법] 가능한 복제본 (https://stackoverflow.com/questions/9101804/how-to-put-server-side-control-in-literal) – Laslos

+0

ASPX 서버 측 마크 업을 추가하고 엔진이 올바르게 렌더링 할 것으로 기대하십시오. 그것은 그것이 작동하는 방식이 아닙니다. 가능한 경우 동적으로 컨트롤을 추가하지 않는 것이 가장 좋습니다. – mason

답변

1

리터럴 컨트롤은 네이티브 html 전용이라고 생각합니다. 렌더링 된 소스를 살펴보십시오. 나는 당신이 소스에서 서버 사이드 마크 업을 볼 것이라고 믿는다.

새 TextBox와 함께 컨트롤을 추가 할 수 있습니다.

asp 텍스트 상자를 모두 함께 사용하지 않고 네임을 관리하고 포스트 백에서 값을 가져 오는 네이티브를 사용하는 것이 더 쉽습니다.