【问题标题】:Is it bad to use runat="server" on <tr>?在 <tr> 上使用 runat="server" 不好吗?
【发布时间】:2011-06-16 18:24:37
【问题描述】:

我支持使用runat="server" 到处显示/隐藏表格行的应用程序。

例如,在存在依赖 DropDownLists 的地方,带有子 ddl 的行将被隐藏,直到我们在父 ddl 中选择了一个值。

这是一种不好的做法吗?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: asp.net html runatserver


    【解决方案1】:

    我在需要时使用runat="server"。所以我认为你也可以使用它。 :-)

    【讨论】:

      【解决方案2】:

      这就是我隐藏包含其他服务器控件的行的方法。其他选项是使用 asp:panel 或其他容器,但这会添加更多 HTML 而没有任何好处。

      【讨论】:

      • asp:PlaceHolder 是避免额外渲染 HTML 的一种方法
      • 我的意思是 ASPX 页面本身中的 HTML 和服务器标签。
      【解决方案3】:

      一点也不。 ASP.NET 支持使任何 html 标记在服务器端运行。您的替代方法是将标签包装在Panel 中,然后隐藏或显示它。如果您不是在寻找额外的功能或想自己控制输出,那么在服务器上运行一个 html 标记不是问题。

      【讨论】:

        【解决方案4】:

        我认为这不一定是坏习惯。我做过很多次同样的事情。我认为这主要是个人喜好。

        【讨论】:

          【解决方案5】:

          将 runat="server" 与标准 HTML 控件一起使用还不错。您经常会发现使用 PlaceHolders 来显示和隐藏页面上的内容,或者在 ASP.NET MVC 中,您可能会在视图中看到诸如 之类的内联代码块的使用。就其本身而言,不考虑其他设计方面,它既不好也不坏。

          【讨论】:

            【解决方案6】:

            我认为这绝对是一种糟糕的做法。首先,除非您需要新数据,否则您无需前往服务器隐藏和显示控件。

            其次,任何体面的 javascript 框架都允许您根据控件的 id、类名或任何 css 选择器隐藏显示控件。此外,使用 javascript post/get 到通用处理程序将为您提供所需的数据,而无需回发。

            我建议使用 JQuery 或其他替代方法。

            【讨论】:

            • 由于 *gasp* UpdatePanels,它已经在访问服务器以填充子 DropDownList。
            【解决方案7】:

            这取决于您对性能的关注程度。任何标有 runat="server" 的内容都经过了比客户端标签更多的处理。

            就个人而言,我以前使用过它们。特别是在表格单元格或表格行依赖于来自服务器的数据的情况下。您可以使用带有隐藏字段的 Javascript 或 JQuery,但您仍然需要为隐藏字段访问服务器,所以它不会买太多。

            【讨论】:

              猜你喜欢
              • 2012-07-12
              • 2012-03-20
              • 1970-01-01
              • 1970-01-01
              • 2011-08-16
              • 1970-01-01
              • 1970-01-01
              • 2012-03-06
              • 1970-01-01
              相关资源
              最近更新 更多