2014-02-12 61 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屬性。

當然@約翰尼建議的是正確的。如果您需要隱藏實際上只有一個控件的內容,則直接隱藏控件。