0

我想知道人们通常使用什么服务器控件来围绕和分隔 Web 窗体场景中的相关控件和内容块。很多时候,我需要用一个“面板”围绕一个 HTML 块和相关的服务器控件,我可以根据后面代码中的一些 UI 逻辑来显示或隐藏它。我通常会遇到使用面板的情况,但是如果我需要在表格中包围多个 TR,这将不起作用,例如,因为面板呈现为在 Table 标签内无效的 div。在这种情况下,我通常只是将每个 TR 设置为 runat server 并单独显示/隐藏它们,但必须有更好的方法。我已经看到用于此场景的 PlaceHolder 控件,但想知道是否有人这样做或有任何其他建议。

4

4 回答 4

1

我不认为有一个适用于所有场景的单一答案——我们没有数百种工具,因此我们总是可以使用锤子。

当生成的 div 可以正常工作时,面板非常有用。PlaceHolder 继承自 Control 而不是 WebControl,因此您可以提出它使用较少开销的论点。当我有一个表并且需要隐藏一个单独的表行时,我也不会对添加和 id 和 runat="server" 到 tr 感到内疚。

或者,当我需要制作一个很大的编辑器控件表时(这适合 90% 的我想要隐藏单个表行的情况),我什至制作了一个控件,可以为我自动执行一些标记. 该控件使字段标题文本自动化,无论是否将其设为粗体(必需),添加带有滚动工具提示的帮助气泡,而我必须手动添加的只是文本框或其他编辑器控件。积极的副作用是我的自定义控件为我提供了一个 ID,我也可以将其设置为 Visible。

于 2008-10-23T04:25:53.057 回答
0

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

您可能会咬紧牙关,通过服务器端代码块来访问后面代码的属性:

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

  <% if( ShowSecretRow ) { %>

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

  <% } %>
</table>

不过要小心……这是一个滑坡,你不希望你的 ASPX 太复杂。

于 2008-10-22T18:46:18.547 回答
0

也许是字面控制。

于 2008-10-22T18:51:09.363 回答
0

你可以使用任何你想要的 html 元素,只要给它一个 id 和 runat 服务器。这给了你一些灵活性。

于 2008-10-22T18:56:31.723 回答