ASP.NET 사용자 컨트롤 조합을 동적으로 생성하는 방법은 무엇입니까?
-
01-07-2019 - |
문제
여러 가지 사용자 컨트롤이 있습니다. A
, B
, C
그리고 D
.임의의 입력을 기반으로 이들의 조합을 생성해야 합니다.예를 들어입력이 2a3d1a2c
A 두 개, 그 뒤에 D 세 개, 다시 A 등을 보여줘야 합니다.
또한 제대로 작동하려면 클라이언트 ID를 안정화해야 합니다.이러한 각 컨트롤은 자체적인 사용을 사용하기 때문에 ClientID
스스로 입력을 수집하는 속성입니다.예를 들어사용자 컨트롤 A는 내부적으로 다음과 같은 입력을 생성합니다. this.ClientID + "$input1"
, 다음과 같은 요청에서 입력을 수집합니다. Request[this.ClientID + "$input1"]
.하나 이상의 A가 있을 수 있으므로 각 A는 동일해야 합니다. (unique) ClientID
요청에서 올바른 입력을 얻기 위해 포스트백 후.
해결책
컨트롤을 동적으로 추가하려면 패널을 자리 표시자로 사용할 수 있습니다.
<asp:Panel ID="ControlPlaceholder" runat="server" />
그런 다음 서버 측에서 다음과 같이 개체를 추가할 수 있습니다.
int controlCount = 0;
...
TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);
Page_Load 이벤트 중에 컨트롤을 추가하고 컨트롤 ID를 생성하는 일관된 방법(예: 위의 단순 개수)을 사용하면 모든 viewstate 또는 이벤트 바인딩이 포스트백 시 올바른 개체에 다시 바인딩됩니다.
제휴하지 않습니다 StackOverflow