如果不是ASP控件,则隐藏父容器内的ASP.Net NPE

如果不是ASP控件,则隐藏父容器内的ASP.Net NPE,asp.net,Asp.net,从JSF回到ASP.Net,我在以下标记中遇到了一个问题: 我在panel组件中得到一个空指针,除了这个.value。我甚至在面板上调用了DataBind() <asp:Panel id="pnl" runat="server" visible="<%# this.value != null%>"> <%= this.value.Foo %> </asp:Panel> protected void Page_Load(object sen

从JSF回到ASP.Net,我在以下标记中遇到了一个问题:

我在panel组件中得到一个空指针,除了
这个.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();
}

受保护的无效页面加载(对象发送方、事件参数e)
{
如果(iPostBack)
返回;
if(this.value==null)
返回;
this.pnl.DataBind();
}

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

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

<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;
    }

}

受保护的无效页面加载(对象发送方、事件参数e)
{
如果(iPostBack)
返回;
如果(this.value!=null)
{
pnl.Visible=true;
literal.Text=this.value.Foo;
}
其他的
{
pnl.Visible=false;
}
}

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

<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;
    }

}

受保护的无效页面加载(对象发送方、事件参数e)
{
如果(iPostBack)
返回;
如果(this.value!=null)
{
pnl.Visible=true;
literal.Text=this.value.Foo;
}
其他的
{
pnl.Visible=false;
}
}

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

<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;
    }

}

受保护的无效页面加载(对象发送方、事件参数e)
{
如果(iPostBack)
返回;
如果(this.value!=null)
{
pnl.Visible=true;
literal.Text=this.value.Foo;
}
其他的
{
pnl.Visible=false;
}
}

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

<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;
    }

}

受保护的无效页面加载(对象发送方、事件参数e)
{
如果(iPostBack)
返回;
如果(this.value!=null)
{
pnl.Visible=true;
literal.Text=this.value.Foo;
}
其他的
{
pnl.Visible=false;
}
}

您可能在这里有错误:

  • 您应该在内部执行:

  • 大写字母:
    可见
    {Capital})


您可能在这里有错误:

  • 您应该在内部执行:

  • 大写字母:
    可见
    {Capital})


您可能在这里有错误:

  • 您应该在内部执行:

  • 大写字母:
    可见
    {Capital})


您可能在这里有错误:

  • 您应该在内部执行:

  • 大写字母:
    可见
    {Capital})



您是否尝试过
?(也可见{capital})。除非你的意思是在JS中的可见性,谢谢,这非常有效:)但是小写或大写在asp中并不重要。不区分大小写的可以在将来更改。我不会指望的。你试过了吗?(也可见{capital})。除非你的意思是在JS中的可见性,谢谢,这非常有效:)但是小写或大写在asp中并不重要。不区分大小写的可以在将来更改。我不会指望的。你试过了吗?(也可见{capital})。除非你的意思是在JS中的可见性,谢谢,这非常有效:)但是小写或大写在asp中并不重要。不区分大小写的可以在将来更改。我不会指望的。你试过了吗?(也可见{capital})。除非你的意思是在JS中的可见性,谢谢,这非常有效:)但是小写或大写在asp中并不重要。不区分大小写的可以在将来更改。我不会指望它。如果将Visibility设置为code behind,标记还会被执行吗?@djmj如果将visible设置为false,它将不会在生成的html@djmj它将执行。它不会呈现任何html,但会执行代码块。嗯,那么我更喜欢@RoyiNamir answer中的in-markup样式。因为这使视图和控制器更加分离。后面的代码不是控制器。隐藏的代码是视图的一部分。如果您希望使用类似MVC的体系结构和Web表单,请查看MVP模式(也有一个框架可以帮助您实现它,但在没有特定框架的情况下实现起来很简单)。演示者是控制器,但不是代码隐藏。如果在代码隐藏上设置了可见性,标记是否仍会执行?@djmj如果将visible设置为false,则不会在生成的html@djmj它将执行。它不会呈现任何html,但会执行代码块。嗯,那么我更喜欢@RoyiNamir answer中的in-markup样式。因为这使视图和控制器更加分离。后面的代码不是控制器。隐藏的代码是视图的一部分。如果您希望使用类似MVC的体系结构和Web表单,请查看MVP模式(也有一个框架可以帮助您实现它,但在没有特定框架的情况下实现起来很简单)。演示者是控制器,但不是代码隐藏。如果在代码隐藏上设置了可见性,标记是否仍会执行?@djmj如果将visible设置为false,则不会在生成的html@djmj它将执行。它不会呈现任何html,但会执行代码块。嗯,那么我更喜欢@RoyiNamir answer中的in-markup样式。因为这样可以保持一个视图