QA@IT
«質問へ戻る

4
本文
 A:Visible=false
 B:Visible=true
 
-
 まずは[こちら](https://code.msdn.microsoft.com/10-Web-VB-eabab729)を参考にユーザーコントロール内のイベント結果をwebフォームで取得するコードを書いたのですが、Button押下時に「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが発生してしまいます。
 
 <default.aspx>
 直前の「Protected prm As Page_productList」の宣言が良くないのでしょうか?
 
 ご教授よろしくお願い致します。
+
+
+
+<2015年1月19日追記>
+今回の質問は冒頭のvisible切替ではなく、あくまでユーザーコントロールA内の変数の値を親webフォーム取得する質問です。
+値の取得に関しましては、丁寧な指導のおかげで実現することが出来ました。
+紛らわしい記載をしてしまい誠に申し訳ございません。

[ASP.NET]ユーザーコントロールのイベント結果をwebフォームで取得できない

ASP.NET,VB.NET初心者です。
以下のように、ユーザーコントロールAの押下イベントで、親のwebフォームに配置した別のユーザーコントロールBのvisibleのプロパティ値を変更する処理を行いたいです。

A:Visible=true
B:Visible=false
↓ ユーザーコントロールA内のbutton押下
A:Visible=false
B:Visible=true

まずはこちらを参考にユーザーコントロール内のイベント結果をwebフォームで取得するコードを書いたのですが、Button押下時に「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが発生してしまいます。

<default.aspx>

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Src="productList.ascx" TagName="pList" TagPrefix="contents" %>
(略)
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Button ID="Button1" runat="server" Text="Button" />
      <contents:pList ID="productList" runat="server" Visible="false" />
    </div>
  </form>
</body>

<default.aspx.vb>

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected prm As Page_productList
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = prm.visiblePrmID()
    End Sub

End Class

<productList.ascx>

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="productList.ascx.vb" Inherits="Page_productList" %>
    <asp:Button ID="Button1" runat="server" Text="実行" />

<productList.ascx.vb>

Partial Class Page_productList
    Inherits System.Web.UI.UserControl

    Private prmID As String
    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        prmID = "Check"
    End Sub

    Public Property visiblePrmID() As String
        Get
            Return prmID
        End Get
        Set(ByVal value As String)
            prmID = value
        End Set
    End Property
End Class

デバッグにて<default.aspx.vb>のButton1_Clickイベントで「Label1.Text = prm.visiblePrmID()」のprmがNothingになっているのが確認出来ました。
直前の「Protected prm As Page_productList」の宣言が良くないのでしょうか?

ご教授よろしくお願い致します。

<2015年1月19日追記>
今回の質問は冒頭のvisible切替ではなく、あくまでユーザーコントロールA内の変数の値を親webフォーム取得する質問です。
値の取得に関しましては、丁寧な指導のおかげで実現することが出来ました。
紛らわしい記載をしてしまい誠に申し訳ございません。

ASP.NET,VB.NET初心者です。
以下のように、ユーザーコントロールAの<button>押下イベントで、親のwebフォームに配置した別のユーザーコントロールBのvisibleのプロパティ値を変更する処理を行いたいです。

A:Visible=true
B:Visible=false
↓ ユーザーコントロールA内のbutton押下
A:Visible=false
B:Visible=true

まずは[こちら](https://code.msdn.microsoft.com/10-Web-VB-eabab729)を参考にユーザーコントロール内のイベント結果をwebフォームで取得するコードを書いたのですが、Button押下時に「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが発生してしまいます。

<default.aspx>
```
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Src="productList.ascx" TagName="pList" TagPrefix="contents" %>
(略)
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Button ID="Button1" runat="server" Text="Button" />
      <contents:pList ID="productList" runat="server" Visible="false" />
    </div>
  </form>
</body>
```
<default.aspx.vb>
```
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected prm As Page_productList
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = prm.visiblePrmID()
    End Sub

End Class
```
<productList.ascx>
```
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="productList.ascx.vb" Inherits="Page_productList" %>
    <asp:Button ID="Button1" runat="server" Text="実行" />
```
<productList.ascx.vb>
```
Partial Class Page_productList
    Inherits System.Web.UI.UserControl

    Private prmID As String
    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        prmID = "Check"
    End Sub

    Public Property visiblePrmID() As String
        Get
            Return prmID
        End Get
        Set(ByVal value As String)
            prmID = value
        End Set
    End Property
End Class
```
デバッグにて<default.aspx.vb>のButton1_Clickイベントで「Label1.Text = prm.visiblePrmID()」のprmがNothingになっているのが確認出来ました。
直前の「Protected prm As Page_productList」の宣言が良くないのでしょうか?

ご教授よろしくお願い致します。



<2015年1月19日追記>
今回の質問は冒頭のvisible切替ではなく、あくまでユーザーコントロールA内の変数の値を親webフォーム取得する質問です。
値の取得に関しましては、丁寧な指導のおかげで実現することが出来ました。
紛らわしい記載をしてしまい誠に申し訳ございません。

質問を投稿

[ASP.NET]ユーザーコントロールのイベント結果をwebフォームで取得できない

ASP.NET,VB.NET初心者です。
以下のように、ユーザーコントロールAの押下イベントで、親のwebフォームに配置した別のユーザーコントロールBのvisibleのプロパティ値を変更する処理を行いたいです。

A:Visible=true
B:Visible=false
↓ ユーザーコントロールA内のbutton押下
A:Visible=false
B:Visible=true

まずはこちらを参考にユーザーコントロール内のイベント結果をwebフォームで取得するコードを書いたのですが、Button押下時に「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが発生してしまいます。

<default.aspx>

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Src="productList.ascx" TagName="pList" TagPrefix="contents" %>
(略)
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Button ID="Button1" runat="server" Text="Button" />
      <contents:pList ID="productList" runat="server" Visible="false" />
    </div>
  </form>
</body>

<default.aspx.vb>

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected prm As Page_productList
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = prm.visiblePrmID()
    End Sub

End Class

<productList.ascx>

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="productList.ascx.vb" Inherits="Page_productList" %>
    <asp:Button ID="Button1" runat="server" Text="実行" />

<productList.ascx.vb>

Partial Class Page_productList
    Inherits System.Web.UI.UserControl

    Private prmID As String
    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        prmID = "Check"
    End Sub

    Public Property visiblePrmID() As String
        Get
            Return prmID
        End Get
        Set(ByVal value As String)
            prmID = value
        End Set
    End Property
End Class

デバッグにて<default.aspx.vb>のButton1_Clickイベントで「Label1.Text = prm.visiblePrmID()」のprmがNothingになっているのが確認出来ました。
直前の「Protected prm As Page_productList」の宣言が良くないのでしょうか?

ご教授よろしくお願い致します。

ASP.NET,VB.NET初心者です。
以下のように、ユーザーコントロールAの<button>押下イベントで、親のwebフォームに配置した別のユーザーコントロールBのvisibleのプロパティ値を変更する処理を行いたいです。

A:Visible=true
B:Visible=false
↓ ユーザーコントロールA内のbutton押下
A:Visible=false
B:Visible=true


まずは[こちら](https://code.msdn.microsoft.com/10-Web-VB-eabab729)を参考にユーザーコントロール内のイベント結果をwebフォームで取得するコードを書いたのですが、Button押下時に「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが発生してしまいます。

<default.aspx>
```
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Src="productList.ascx" TagName="pList" TagPrefix="contents" %>
(略)
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Button ID="Button1" runat="server" Text="Button" />
      <contents:pList ID="productList" runat="server" Visible="false" />
    </div>
  </form>
</body>
```
<default.aspx.vb>
```
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected prm As Page_productList
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = prm.visiblePrmID()
    End Sub

End Class
```
<productList.ascx>
```
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="productList.ascx.vb" Inherits="Page_productList" %>
    <asp:Button ID="Button1" runat="server" Text="実行" />
```
<productList.ascx.vb>
```
Partial Class Page_productList
    Inherits System.Web.UI.UserControl

    Private prmID As String
    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        prmID = "Check"
    End Sub

    Public Property visiblePrmID() As String
        Get
            Return prmID
        End Get
        Set(ByVal value As String)
            prmID = value
        End Set
    End Property
End Class
```
デバッグにて<default.aspx.vb>のButton1_Clickイベントで「Label1.Text = prm.visiblePrmID()」のprmがNothingになっているのが確認出来ました。
直前の「Protected prm As Page_productList」の宣言が良くないのでしょうか?

ご教授よろしくお願い致します。