如何使用c#从用户控件更改div可见性

Com*_*umb 4 c# asp.net user-controls

我已经完全掌握了Web用户控件和更改<div>父ASPX中的可见性.

我有一个位于用户控件内的购物车,其中一个页面包含了UC,其状态<div>显示了购物车内容的摘要.如果购物车是空的,则表示不同<div>.

UC中的代码

if (varCartStatus)
{
  cartStatusTrue.Visible = true;
  cartStatusFalse.Visible = false;
else
{
  cartStatusTrue.Visible = false;
  cartStatusFalse.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)

我目前得到的是当前上下文中不存在'cartStatusTrue'.'cartStatusFalse'在当前上下文中不存在.

如何让UC改变<div>父ASPX中的可见性?

对不起,我对.net和C#很新,我完全迷失了(再次!)

gil*_*ly3 6

由于控件存在于页面中,而不是控件中,因此您必须在页面中找到它们:

this.Page.FindControl("cartStatusTrue").Visible = varCartStatus;
this.Page.FindControl("cartStatusFalse").Visible = !varCartStatus;
Run Code Online (Sandbox Code Playgroud)

或者类似地,如果他们在父控件中:

this.Parent.FindControl("cartStatusTrue").Visible = varCartStatus;
this.Parent.FindControl("cartStatusFalse").Visible = !varCartStatus;
Run Code Online (Sandbox Code Playgroud)

当然,还要确保你的div都有runat="server"ID="cartStatusTrue"ID="cartStatusFalse".

编辑:可能是设计改进的另一个选项是将隐藏div的工作移到aspx页面.您可以将其公开varCartStatus为控件的属性,并从aspx页面中读取该属性.在你的aspx.cs中:

this.cartStatusTrue.Visible = this.CartControl.CartStatus;
this.cartStatusFalse.Visible = !this.CartControl.CartStatus;
Run Code Online (Sandbox Code Playgroud)