2013-08-28 1 views
0

사용자 정의 컨트롤 안에 텍스트 상자가 있습니다. 나는이 사용자 컨트롤을 생성하고 자리 표시 자에로드합니다. 사용자에자리 표시 자 안에 UserControl의 TextBox 값을 설정하십시오.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="IVT_FormClient.ascx.cs" Inherits="Evi.Sc.Web.Evi.IVT.Sublayouts.IVT_FormClient" %> 
<asp:Panel ID="pnlContainer" runat="server">   
    <asp:TextBox ID="txtClientNumber" runat="server"></asp:TextBox> 
</asp:Panel> 

액세스 수정이 (이 사용자 제어가

Object reference not set to an instance of an object 

: 나는 텍스트 상자에 값을 할당하려고 할 때

는, 나는 다음 아래의 오류를 제기 제어) :

public string TxtFirstName 
{ 
    get { return txtFirstName.Text; } 
    set { txtFirstName.Text = value; } 
} 

웹 양식에서 나는 컨트롤 참조가 :

사용자 컨트롤의 뒤에있는 코드에서
<%@ Reference Control="~/Evi/IVT/Sublayouts/IVT_FormClient.ascx" %> 

16,은 다음과 같습니다

public partial class frm_VerifyIdentity : System.Web.UI.Page 
    { 
     IVT_FormClient ivtFormClient = new IVT_FormClient(); 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
      IVT_FormClient ivtFormClient = (IVT_FormClient)LoadControl("~/Evi/IVT/Sublayouts/IVT_FormClient.ascx"); 

       Client UserClient = new Client(); 

       UserClient = Load_ClientVerification(Server.HtmlEncode(Request.QueryString["ID"]).Trim()); 

       if (UserClient != null) 
       { 
        ivtFormClient.TxtFirstName = UserClient.FirstName; 
        plhFormClient.Controls.Add(ivtFormClient); 
       } 

      } 
     } 
} 

오류가 발생

코드의 라인 : 생성자를 통해 UserControl의 인스턴스를 생성하지 마십시오

   ivtFormClient.TxtFirstName = UserClient.FirstName; 

답변

0

하지만, 이미 Page_Load에서 완료 했으므로 LoadControl으로 그러나, 당신은 단지 if(!IsPostBack)하고있다. 따라서 컨트롤은 생성자를 통해 다음 다시 게시를 인스턴스화합니다.

또한 모든 재 게시마다 동적 컨트롤을 다시 만들어야합니다. 나는 페이지에 deleratively UserControl을 추가하는 것이 좋습니다. 그에 따라 숨기거나 표시 할 수 있습니다. 그렇지 않으면 Page_Load 대신 항상 Page_Init으로 작성/추가해야합니다. 문제가 해결되었다

IVT_FormClient ivtFormClient = null; 

protected void Page_Init(object sender, EventArgs e) 
{ 
    ivtFormClient =(IVT_FormClient)LoadControl("~/Evi/IVT/Sublayouts/IVT_FormClient.ascx"); 
    Client UserClient = new Client(); 
    UserClient = Load_ClientVerification(Server.HtmlEncode(Request.QueryString["ID"]).Trim()); 

    if (UserClient != null) 
    { 
     ivtFormClient.TxtFirstName = UserClient.FirstName; 
     plhFormClient.Controls.Add(ivtFormClient); 
    } 
} 
+0

감사를 :

그래서 이것은 (단지 페이지에 추가)하지만 원하는대로 일을해야하지 모범 사례입니다. –