텍스트 상자가있는 사용자 정의 컨트롤을 가지고 있습니다. 이제이 사용자 정의 컨트롤은 aspx 페이지에서 사용하는 다른 사용자 정의 컨트롤에 있습니다. 어떻게하면 텍스트 상자의 값을 가져올 수 있습니까? 첫 번째 사용자 정의 컨트롤.사용자 정의 컨트롤에서 텍스트 상자의 값을 가져 오는 방법은 무엇입니까?
답변
, 예를 들어,
public string TextBoxValue
{
get { return txtControl1.Text; }
}
이 방법 공용 개체와 전체 텍스트 상자 컨트롤을 노출시키지 않고 텍스트 상자의 값을 얻을 수 있습니다 내용을 노출하기 위해 UserControl을의 속성을 작성합니다.
Jon Limjap의 대답은 이런 종류의 문제에 대해 최상의 솔루션을 제공합니다. 공개 속성을 사용하여 컨트롤 값을 노출합니다.
그러나 이렇게하고 싶지 않거나 많은 컨트롤에서이 작업을 수행해야하며 각 컨트롤의 Public 속성을 만들지 않으려면 Reflection을 사용하여 "컨트롤 찾기" 필요한 UserControl의 ChildControl에서 :
TextBox txt = UserControl1.FindControl("myTextBox") as TextBox;
if (txt != null)
{
string val = txt.Text;
}
나는 요청에서 값을 얻는 것이 더 쉽다고 생각한다. 의 에서 .aspx 페이지의 상단에
string get_value(string control_name)
{
var key = Request.Form.AllKeys.First(x => x.ends_with(control_name));
return Request.Form[key];
}
을 태그를 아래 줄을 추가 : 당신은이 같은 일반적인 방법은 그것을 찾기 위해 쓸 수 있습니다.
<%@ Register TagPrefix="Test" TagName="TestControl" Src="Test.ascx" %>
이 지시문은 페이지가 처리 될 때 인식 할 수 있도록 컨트롤을 등록합니다. TagPrefix는 컨트롤의 고유 네임 스페이스를 결정하고, TagName은 사용자 정의 컨트롤의 이름이고 Src는 사용자 정의 컨트롤의 경로입니다. 사용자가 자바 스크립트를 사용하여 코드 숨김에서, 액세스 속성을 통해 .ASPX 페이지에서 사용자 정의 컨트롤의 값을 설정할 수 있습니다
<Test:TestControl id="TestControl" runat="Server"/>
가 액세스 및 사용자 설정 등의 선언 사용자의 컨트롤은 .aspx 페이지의 값을 제어합니다 자세한 내용은아래에 표시됩니다. test.ascx 컨트롤에 두 개의 텍스트 상자와 제출 단추가있는 경우 .aspx 페이지에서 컨트롤의 텍스트 상자 값에 액세스 할 수 있습니다. .ascx 페이지. 에서 .aspx 페이지에서
public string FirstName
{
get{return txtFirstName.Text;}
set{txtFirstName.Text = value;}
}
, 당신은 사용 FIRSTNAME에 액세스 할 수 있습니다
TestControl.FirstName
You can set the FirstName of the control from aspx page using
TestControl.FirstName = "Suzzanne"
참고 : ref