ASP.Net NPE里面隐藏的父容器,如果不是asp控件

时间:2014-08-20 10:36:50

标签: asp.net

从JSF回到ASP.Net我在跟踪标记时遇到问题:

我在面板组件中的this.value上得到一个空指针。我甚至在面板上调用了DataBind()

<asp:Panel id="pnl" runat="server" visible="<%# this.value != null%>">
    <%= this.value.Foo %>
</asp:Panel>

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
        return;

    if (this.value == null)
        return;

    this.pnl.DataBind();
}

我必须始终使用asp控件吗?

2 个答案:

答案 0 :(得分:2)

你可能有错误:

  • 你应该在里面做:<%# this.value.Foo %>

  • 大写字母:Visible {capital})。

答案 1 :(得分:1)

即使面板不可见,面板内的代码仍会执行。它不会被渲染到结果中,但会被执行。我建议您使用控件属性并通过代码隐藏在不重复任何内容的控件上设置值

<asp:Panel id="pnl" runat="server">
    <asp:Literal ID="literal" runat="server" />
</asp:Panel>


protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
        return;

    if(this.value != null)
    {
       pnl.Visible = true;
       literal.Text = this.value.Foo;
    }
    else
    {
       pnl.Visible = false;
    }

}