2017-07-15 22 views
0

私はその中にラジオボタンを持つユーザーコントロールを作成しました。私はまた、ラジオボタンのタイプのパブリックプロパティを作成し、そのラジオボタンが割り当てられているので、aspxページのコードの背後にアクセスすることができます。なぜユーザーコントロール内のコントロールに.aspxページでアクセスできないのですか?

public partial class WebUserControl : System.Web.UI.UserControl 
{ 
    public RadioButton radiobtn { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     initiateControls(); 
    } 
    private void initiateControls() 
    { 
     radiobtn = RadioButton1; 
    } 
} 

は、今私が.aspxのページにそのユーザーコントロールをドラッグし、ユーザーコントロール内のラジオボタンへのアクセスが、「null参照例外」をスローしているしようとしています。

.aspxの

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %> 





<%@ Register src="UserControls/WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %> 





<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <uc1:WebUserControl ID="WebUserControl1" runat="server" /> 

    </div> 
    </form> 
</body> 
</html> 

は.cs

public partial class test : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      try 
      { 


       WebUserControl1.radiobtn.Visible = false; 
      } 
      catch (Exception ex) 
      { 

       Response.Write(ex.Message); 
      } 
     } 
    } 
} 
+0

あなたのUserControlが初期化される前に、**。aspx.cs **から 'Page_Load'が呼び出されると思います。 – Alisson

+0

[Gary.S answer here](https://stackoverflow.com/questions/8160319/all-controls-are-null-within-usercontrol?rq=1)を参照してください。 – Alisson

答えて

0

あなたのページをPage_Loadは、コントロールのPage_Loadの前に実行されます。

このページでは、イベントの順序を示しています。

https://msdn.microsoft.com/en-us/library/ms178472.aspx

をあなたはLoadCompleteまたはPreRenderイベントでコントロールにアクセスすることができますが、Page_Loadの

1

には、getプロパティを実装する必要がありません。

public RadioButton radiobtn 
{ 
    get 
    { 
     return RadioButton1; 
    } 
} 
+0

どちらも既に存在しています: 'get;セットした; ' – VDWWD

+0

@VDWWD彼らは存在していたものの、空であることを確かめてください。あなたが設定したものだけを得ることができました。私の場合、代わりに、ユーザコントロールに定義されているラジオボタンである「RadioButton1」の参照を取得します。 –

+0

あなたは正しい、私の間違い。 – VDWWD

関連する問題