【问题标题】:Problem with setting visibility of div in aspx page在 aspx 页面中设置 div 可见性的问题
【发布时间】:2011-07-28 17:35:43
【问题描述】:

我在 checkout.aspx 页面中有一个 div。 div的内容如下:

<div id="PaymentDetails" runat="server" style="text-align:center" visible="true">
    <asp:Label ID="PaymentDetailsLbl" Text="Payment Details:" runat="server" Font-Size="Large"></asp:Label>
    <br />
    <br />
    <br />
    <asp:Label ID="UNameLbl" Text="User Name:" runat="server"></asp:Label>
    &nbsp;
    <asp:Label ID="UNameTextLabel" runat="server" Width="150px"></asp:Label>
    <br />
    <br />
    <asp:Label ID="AmountLbl" Text="Amount:" runat="server"></asp:Label>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:Label ID="AmountTextLabel" runat="server" Width="50px"></asp:Label>
    <br />
    <br />
    <asp:Label ID="CCNumberLbl" Text="Credit Card No:" runat="server"></asp:Label>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:TextBox ID="CCNumberTBox" runat="server"></asp:TextBox>
    <br />
    <br />
    <br />
    <asp:Button ID="SubmitBtn" runat="server" Text="Submit" OnClick="SubmitBtn_Click" />
    <asp:Button ID="ResetBtn" runat="server" OnClick="ResetBtn_Click" Text="Reset" />
    <br />
    <br />
    <asp:Label runat="server" ID="SuccessMessageLabel" ForeColor="Red"></asp:Label>
    <asp:Button ID="SoftwareDownloadsBtn" runat="server" Text="Software Downloads" Visible="false"
        OnClick="SoftwareDownloadsBtn_Click" />
    <br />
    <br />
    <asp:RegularExpressionValidator ID="CCNumberValidator" ErrorMessage="Credit Card Number: Min 10 and max 16 digits, starts with 3 or 4"
        ControlToValidate="CCNumberTBox" runat="server"></asp:RegularExpressionValidator>
</div>

当用户未选择任何商品或用户已使用此代码从购物车中删除所有商品时,我尝试将 div 的可见性设置为 false:

 else if ((Session["SelectedRowItems"] == null) || (shoppingCartItems.Count == 0))
        {
            this.Page.FindControl("PaymentDetails").Visible = false;
            GridView1.EmptyDataText = "No Items Checked Out";
            GridView1.EmptyDataRowStyle.CssClass = "EmptyGridViewContent";
        }

但我收到以下错误:

对象引用未设置为对象的实例。

错误的详细截图是here

顺便说一句,我正在使用 VS 2008、asp.net/C# 及其 Web 应用程序项目

请帮助我。

感谢期待

【问题讨论】:

    标签: asp.net html visibility


    【解决方案1】:

    如果你的 div 既不是子页面也不是用户控件也不是母版页,那么你不需要使用 FindControl 方法。添加一个 runat 服务器标签并在代码隐藏文件中使用 id 访问它。

    apsx page:
    
    <div id="myDiv" runt="server" >
    
    // Your html
    
    </div>
    
    aspx.cs:
    private void ShowHideDiv(bool status)
    {
       myDiv.Visible = status;
    }
    

    【讨论】:

      【解决方案2】:

      仅当PaymentDetails 是根容器的一部分时,使用FindControl() 定位PaymentDetails 才有效。也就是说,它不会递归搜索属于其他控件的子控件的控件。

      FindControl() 似乎正在返回 null,当您尝试调用 null 上的方法时会收到错误消息。

      FindControl() 在这里是不必要的。只需使用PaymentDetails.Visible = false

      【讨论】:

      • 你能告诉我根容器是什么意思吗?如果可能的话,你能否举例说明,因为它会增强我的理解并阻止我再次犯同样的错误。感谢期待
      • @user653622:有关于herehere的问题的讨论。
      • 非常感谢!!这很有帮助!祝你有美好的一天!
      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多