【问题标题】:Conditionally excluding a block of html in ASP.NET WebForms有条件地排除 ASP.NET WebForms 中的一个 html 块
【发布时间】:2010-10-17 12:17:29
【问题描述】:

这只是一个简单的问题:如何根据服务器端评估排除aspx Web 表单上的一段html 被服务器返回?

我不是专门讨论控件,因为它们往往具有可见参数,而只是一些原始 html。

【问题讨论】:

    标签: asp.net html webforms


    【解决方案1】:

    有些人反对以下方法,但它没有人回答,我觉得它应该作为一个选项显示。如果使用得当,它会很方便。

    <% if (ShowLabel) {%>
    <label>This will not be shown if the ShowLabel property evaluates false</label>
    <%}%>
    

    要完成这项工作,您需要在页面上拥有一个名为 ShowLabel 的公共或受保护属性,该属性返回一个布尔值。

    【讨论】:

    • 酷我有点喜欢。我猜有些人不喜欢混合代码和标记,但我本质上是一个编码员,所以这对我来说更有意义。 :)
    • 在某些情况下,这甚至是唯一可能的解决方案。例如,如果您想有条件地隐藏
    • 请注意,如果您不想在更改时重新编译变量,则可以在标记中定义变量:.
    • 简单优雅的方式。当代码隐藏中的同一服务器控件的可见设置为 false 由于某种原因无法正常工作时,这甚至对我有用。
    • 是的,不得不求助于这个,因为我无法添加 ID 属性,因为生成的 html 会在客户端复制,并会导致重复的 ID。
    【解决方案2】:
    <div id="divYourDiv" runat="server">
        your stuff goes here...
    </div>
    
    //Server side code...
    public void ShowYourDiv(bool visible)
    {
        this.divYourDiv.Visible = visible;
    }
    

    【讨论】:

    • 我似乎无法从代码隐藏中访问 divYourDiv。我需要先做些什么才能使其易于访问吗?
    • 确保你设置了 runat="server"
    【解决方案3】:

    在代码周围放置一个PlaceHolder 控件。它不会为自己呈现任何代码(例如Panel),因此它不会在可见时干扰 html 代码。

    如果您将PlaceHolderVisible 属性设置为false,则PlaceHolder 内的代码将不会呈现到页面。

    【讨论】:

      【解决方案4】:

      通过它/在隐藏的 div 或面板中设置它(如果使用 div,标记 runat=server,两者都呈现为 div)。然后根据您的评估使 div/面板可见或隐藏。

      【讨论】:

        【解决方案5】:

        你能否将你的 html 包装在一个 asp 面板中,并在服务器端设置面板的可见属性。

        否则,Html 是客户端,你需要使用 javascript 来操作。您也许可以在服务器端代码中呈现一些 javascript,但这通常不是一个好主意。

        【讨论】:

          猜你喜欢
          • 2013-04-10
          • 2015-03-25
          • 1970-01-01
          • 2019-11-13
          • 2014-01-25
          • 2017-02-06
          • 1970-01-01
          • 1970-01-01
          • 2013-12-18
          相关资源
          最近更新 更多