2014-02-12 36 views
1

当与标记工作,如果我想有条件包括一些内容,我在一个正常的方式使用占位符:ASP.Net占位符VS如果指令

<asp:Placeholder Visible=<%# IsExpired %> 
    <span>Prolong your subscription</span> 
</asp:PlaceHolder> 

我也可以用IF-指令:

<% if(IsExpired) {%> 
    <span>Prolong your subscription</span> 
<% }%> 

我更喜欢使用第一个,因为它不会让我的标记混乱。有条件地包含内容的最佳方式是什么?从表现来看,他们是否相似?

+1

它们是类似的,但不同的时间。没有最好的办法,使用你的工作。第一个是UpdatePanel更友好。第二个在aspx页面上添加更多的代码,而不是在后面的代码上。第一个具有附加属性,您可以在PlaceHolder中动态添加其他控件。 – Aristos

回答

2

本地的HTML标签总是比呈现服务器控件更快,因为没有花在使它们

1

我觉得在这里选择的方式几乎与性能无关。但实际上您可能会使用以下代码:

<asp:Label runat="server" Visible=<%# IsExpired %> 
    Prolong your subscription</asp:Label> 

而不是其他两个。这可以使它看起来更直接。

+0

同意你的看法,但仅限于此示例。想象一下里面有更多的控制。 – myroman

+0

在这种情况下,我个人更喜欢使用PlaceHolder。但我总是通过代码插入控件,所以我可以控制何时进行渲染。 – Johnny

1

我从来没有在Web窗体视图中使用C#代码。另外,我将避免在标记中设置Visible属性,并在某些事件中将其置于代码后面。

phWhatever.Visible = IsExpired; 

很多时候您可以避免创建IsExpired属性。

当然@约翰尼建议的是正确的。如果您需要隐藏实际上只有一个控件的内容,则直接隐藏控件。