C# 在Html视图中使用Asp.NET控件属性中的变量

C# 在Html视图中使用Asp.NET控件属性中的变量,c#,asp.net,C#,Asp.net,我想知道是否有办法做到这一点: <asp:Label ID="lblSomething" runat="server" Visible="this.ShowLabel"/> 我知道你们中的一些人可能会问我为什么需要它,但我发现这种方法比在代码背后说的更干净: public bool ShowLabel {get;set;} lblSomething.Visible = this.ShowLabel 我也可以在源代码视图中这样说: <% if(this.ShowLabel)

我想知道是否有办法做到这一点:

<asp:Label ID="lblSomething" runat="server" Visible="this.ShowLabel"/>
我知道你们中的一些人可能会问我为什么需要它,但我发现这种方法比在代码背后说的更干净:

public bool ShowLabel {get;set;}
lblSomething.Visible = this.ShowLabel
我也可以在源代码视图中这样说:

<% if(this.ShowLabel){ %>
   <asp:Label ID="lblSomething" runat="server" Text="Something"/>
<% } %>


但是,第一个对我来说更直观。有什么想法吗?

老实说,在您的情况下,最简单、最干净、最优雅的解决方案是使用
Visible
属性,而不是创建其他布尔值并使
可见
具有相同的值

另一方面,
Label
控件不是密封类。如果需要执行这些操作,我会找到更好的派生
Label
,并通过以下方式实现
ShowLabel
属性:

private bool _showLabel;

public bool ShowLabel
{
    get { return _showLabel; }
    set
    {
        _showLabel = value;
        Visible = value
    }
}
最后,您的新
MyLabel
控件用法将是:

<gray:MyLabel ID="lblSomething" runat="server" ShowLabel="true"/>

无论如何,同样,如果您使用
可见
隐藏此类控件,请不要重新发明轮子:使用ASP.NET中的内容。然而,如果您的问题显示了一个示例,但现实世界的场景不是可见的,而是其他东西,那么我认为您应该使用继承(这比您的建议更优雅)


事实上,一个好的ASP.NET Web表单实践是将标记与表示逻辑完全分离

老实说,在您的情况下,最简单、最干净、最优雅的解决方案是使用
Visible
属性,而不是创建其他布尔值并使
可见
具有相同的值

另一方面,
Label
控件不是密封类。如果需要执行这些操作,我会找到更好的派生
Label
,并通过以下方式实现
ShowLabel
属性:

private bool _showLabel;

public bool ShowLabel
{
    get { return _showLabel; }
    set
    {
        _showLabel = value;
        Visible = value
    }
}
最后,您的新
MyLabel
控件用法将是:

<gray:MyLabel ID="lblSomething" runat="server" ShowLabel="true"/>

无论如何,同样,如果您使用
可见
隐藏此类控件,请不要重新发明轮子:使用ASP.NET中的内容。然而,如果您的问题显示了一个示例,但现实世界的场景不是可见的,而是其他东西,那么我认为您应该使用继承(这比您的建议更优雅)


事实上,一个好的ASP.NET Web表单实践是将标记与表示逻辑完全分离

如果您的
ShowLabel
属性实际上只是标签可见性属性的包装,您可以将属性定义替换为:

public bool ShowLabel
{
    get { return lblSomething.Visible; }
    set { lblSomething.Visible = value; }
}

但是除了可见性属性的一个新名称之外,这实际上并没有给您带来太多的好处。

如果您的
ShowLabel
属性实际上只是标签可见性属性的一个包装,您可以用以下内容替换属性定义:

public bool ShowLabel
{
    get { return lblSomething.Visible; }
    set { lblSomething.Visible = value; }
}
但是,除了可见性属性的一个新名称之外,这实际上并没有给您带来什么