2008-10-22 76 views
0

我想知道什麼服務器控制人員通常用於圍繞和分隔Web窗體場景中的相關控件和內容塊。通常情況下,我需要用一塊「面板」圍繞一塊HTML和相關的服務器控件,我可以根據代碼背後的一些UI邏輯來顯示或隱藏該面板。我通常面臨着使用面板,但是如果我需要在表格中包圍多個TR,例如因爲面板呈現爲在表格標籤內無效的div,則這不起作用。在這種情況下,我通常將每個TR設置爲runat服務器,並分別顯示/隱藏每個TR,但必須有更好的方法。我已經看到用於此場景的PlaceHolder控件,但想知道是否有人這樣做或有任何其他建議。最佳服務器控制周圍塊

+0

你能舉個例子說說你在說什麼嗎?我不明白你爲什麼要切換錶行... – 2008-10-22 18:44:46

+0

切換錶行很容易...只是給tr一個runat =「服務器」和一個ID ... 他想要一個通用的方式切換最終不會生成任何HTML的控件。 – 2008-10-22 18:47:02

回答

1

我不認爲在所有情況下都存在單一答案 - 我們沒有數百種工具,因此我們總是可以使用錘子。

面板非常適合當一個生成的div工作得很好。 PlaceHolder繼承自Control而不是WebControl,因此您可以使用它來減少開銷。當我有一個表並需要隱藏單獨的表格行時,我沒有將tr和id和runat =「server」添加到tr中。或者,當我需要製作一個很棒的編輯控件大表(當我想要隱藏單個錶行時,這符合90%的時間)的時候,我甚至已經制作了一個控件,可以自動化一些我的標記。該控件自動化字段標題文本,無論是否將其設置爲粗體(必填),添加帶翻轉工具提示的幫助文字,以及手動添加的所有內容都是文本框或其他編輯器控件。積極的副作用是我的自定義控件給我一個我可以設置可見的ID。

0

即使使用PlaceHolder控件,Visual Studio也會抱怨您沒有有效的HTML。

你可能會咬緊牙關,並通過上後面的代碼訪問的屬性服務器端代碼塊做到這一點:

<table> 
    <tr> 
    .... 
    </tr> 

    <% if(ShowSecretRow) { %> 

    <tr> 
    <td>shhh!</td> 
    </tr> 

    <% } %> 
</table> 

不過要小心......這是一個危險的,你不希望你的ASPX過於複雜。

0

也許是文字控制。

+0

糾正我,如果我錯了,但我不認爲你可以把環繞HTML文字,除非你在文本屬性中設置它。我想如果你嘗試用 HTMLHERE來包圍.ascx或.aspx中的一堆HTML,你會得到一個錯誤。 – cfbarbero 2008-10-22 19:06:39

0

你可以使用任何你想要的html元素,只要給它一個id和runat服務器即可。這給你一些靈活性。