이전 페이지에서 주어진 답변에 따라 필드 조합에서 약 10 개의 다른 변형을 가질 수있는 양식이 있습니다 (대부분 동일하지만 몇 가지 변경 사항이 있음). 나는 10 개의 별도의 페이지를 만들기보다는, 동적으로 만들려고했다. 결국 이것은 데이터베이스에서 양식 설정을 가져 오지만 지금은 동적 부분을 작동 시키려고합니다. 다음 코드는 다소 효과가 있지만 이상한 결과를 낳습니다.ASP.NET 폼 컨트롤을 동적으로 생성하기
private void AddTestControls()
{
var newbox = new TextBox();
newbox.ID = "FirstBox";
newbox.Text = "This is dynamic";
newbox.CssClass = "stepHeader";
DynamicDiv1.Controls.Add(newbox);
var newlit = new Literal();
newlit.ID = "FirstLit";
newlit.Text = ".<br/>.";
DynamicDiv1.Controls.Add(newlit);
newbox.ID = "SecondBox";
newbox.Text = "This is also dynamic";
newbox.CssClass = "step";
DynamicDiv1.Controls.Add(newbox);
}
나는 그것을 통해 강화했고 모든 속성이 올바르게 설정지고 있지만, 페이지가 마지막으로 렌더링 할 때 만 SecondBox
컨트롤을 볼 수 있습니다. FirstBox
의 흔적은 없습니다. SecondBox
이 자신의 개체 (예 : newebox2
)가되도록 변경하면 두 가지 모두 표시되지만 궁극적으로 데이터베이스에서 양식을 작성하는 방법과 관련하여 상황이 복잡해질 수 있습니다. 나는 왜 DivX의 컨트롤 모음에 추가하기 위해 텍스트 상자 객체를 다시 만들어야하는지 이해하지 못합니다. 나는이 모든 잘못을 저질러 가고 있는가, 아니면 어딘가에 한 걸음을 놓치고 있는가?
정보 주셔서 감사합니다. '.Add'는 참조를 전달하는 것이 아니라 새로운 객체를 만드는 것을 의미한다고 생각했습니다. 나는 그것이 왜 복잡하게 될지 생각하는 이유를 확신하지 못합니다. 당신이 마음 속으로 계획하고있는 것들 중 하나 일뿐입니다. 나는 당신의 방법 제안을 단축하는 것을 끝내었다.'var newbox = new TextBox() {ID = "FirstBox"CssClass = "stepHeader"Text = "이것은 동적"}'코드의 양을 줄이고 동일한 변화에 영향을주기 때문에 . – techturtle
@techturtle 모두에게 일어남 =) 나는 실제로 네가 한대로 글을 쓸 것이지만, 설명을 위해 나는 그것을 방법으로 썼다. –