몇 가지 기존 컨트롤을 래핑하는 몇 가지 사용자 지정 웹 컨트롤을 만들려고합니다. 예를 들어, 그 중 하나는 텍스트 상자의 줄 바꿈입니다 (해당하는 유효성 검사기와 같은 추가 동작이 필요하기 때문에). 문제는 해당 컨트롤의 데이터를 포스트 백에서 보내도록하는 방법을 모르겠습니다. 지금 제어와 웹 양식을 테스트하는 경우사용자 지정 웹 컨트롤 및 포스트 백
public class MyTestBox: WebControl
{
protected TB { get; set; }
public Text
{
get { return TB.Text; }
set { TB.Text = value; }
}
protected override void CreateChildControls()
{
TB= new TextBox()
Controls.Add(TB);
}
}
:하지만
는아주 간단한 예는
는<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<bleh:MyTextBox ID="MyTextBox1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Submit" />
그런 다음 텍스트 상자에 텍스트를 입력하고 제출 한 후, TextBox1에 텍스트를 사용할 수 있습니다 Page_Load에서 MyTextBox1.Text는 비어 있습니다. 포스트 백을 보낼 때 해당 내용을 사용할 수 있도록 변경해야하는 항목은 무엇입니까?
편집 : 지금 생각 컨트롤을 초기화 할 때 단순히 요청 양식을 확인하는 것입니다
뭔가 :
protected override void OnInit(EventArgs e)
{
TB.ID = this.ID + "_TextBox1";
Controls.Add(TB);
if (Page.Request.Form[TB.UniqueID] != null)
{
Text = Page.Request.Form[TB.UniqueID];
}
}
그것은 작동하는 것 같군,하지만 종류의 해키 느낀다. 이것은 합리적인 방법처럼 보입니까?
System.Web.UI.Textbox에서 상속하는 옵션입니까? 그렇다면 Text 속성에 대해 신경 쓰지 않아도됩니다. 추가하려는 기능에 초점을 맞 춥니 다. – adt
이 경우에는 옵션이며 수행 할 수도 있습니다. 한편, 비슷한 문제가있는 좀 더 복잡한 컨트롤이 있습니다. 문제가 더 많고 편집에 추가 한 방식을 고수하는 것이 좋습니다. – Kuzco