【问题标题】:ASP.NET - How to get to Div control in ContentPlaceHolder?ASP.NET - 如何在 ContentPlaceHolder 中获取 Div 控件?
【发布时间】:2010-11-12 10:53:30
【问题描述】:

我为测试目的创建了一个非常简单的网站。只有一个母版页和一个内容页。

我的内容页面如下所示:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div id="TestDiv1">bla bla</div>
    <div id="TestDiv2">ble ble</div>
</asp:Content>

现在,根据某些条件,我想显示/隐藏给定的 div。所以我试图通过 Controls 集合到达其中一个 div,如下所示:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
      ContentPlaceHolder myContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
      myContent.FindControl("TestDiv1").Visible = false; //this is not working 
    }
}

    }
}

但是上面的例子不起作用。 myContent.Controls 集合中不存在两个 div 控件。例如,如果我在内容页面上放置一个 TextBox,我可以通过控件访问它。

那么我应该怎么做才能访问 div 控件呢?

【问题讨论】:

    标签: c# asp.net html contentplaceholder


    【解决方案1】:

    你的 div 是 HTML 控件,尝试添加标签 runat="server"

    <div id="TestDiv1" runat="server">bla bla</div>
    

    这应该可以解决您的问题。

    【讨论】:

    • 谢谢。我已经对其进行了测试,但它导致我的服务器冻结,所以我认为我做错了什么,但这一定是巧合。现在可以了。
    • 很棒的答案。它对我帮助很大。
    【解决方案2】:

    你需要在 div 上设置runat="server"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2019-07-16
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多