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; }
}
但是,除了可见性属性的一个新名称之外,这实际上并没有给您带来什么