【问题标题】:How to find a HtmlGenericControl using a Class如何使用类查找 HtmlGenericControl
【发布时间】:2012-10-20 17:36:39
【问题描述】:

我试图弄清楚如何从一个类中找到我的主 .aspx 页面中的“div”,这可能吗?如果有怎么办?我已经尝试了下面的代码,但没有工作

HtmlGenericControl step1 = (HtmlGenericControl)Page.FindControl("step1")

我知道这是我在文件后面的代码中执行此操作的方式,但在这种情况下,我想从类文件中执行此操作。

提前谢谢你。

基本上我想要完成的是,我的页面中有多个 div,当满足某些条件时,所有的 div 都有 runtat="server" visible="false" 我希望能够更改可见 = “真的”。我在多个页面中有这种情况,所以我希望能够创建一个类并检查那里的条件,并通过这种方式使 div 可见或不可见

【问题讨论】:

  • 它不是服务器控件,因此您不太可能在服务器端找到它,也许您需要说明您打算解决的问题是什么
  • 基本上我想要完成的是,我的页面中有多个 div,当满足某些条件时,所有的 div 都具有 runtat="server" visible="false" 我希望能够改变可见的=“真”。我在多个页面中有这种情况,所以我希望能够创建一个类并检查那里的条件,并通过这种方式使 div 可见或不可见。
  • @Jorame:看看我的解决方案,这正是它的作用。

标签: c# asp.net .net html class


【解决方案1】:

div 元素必须具有 runat="server" 属性:

<body>
  <form id="form1" runat="server">
    <div id="step1" runat="server"></div>
  </form>
</body>

现在,您可以在单独的类中找到带有方法的控件,该方法从页面的类后面的代码中调用:

public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    Class1 class1 = new Class1();
    class1.FindDiv(this);
  }
}

分离类:

public class Class1
{
  public HtmlGenericControl FindDiv(Page page)
 { 
    HtmlGenericControl step1 = (HtmlGenericControl)page.FindControl("step1");
    return step1;
 }
}

【讨论】:

    【解决方案2】:

    如果您使用 ASP 面板而不是 div,您可以访问它并且面板呈现为 div。如果你把 runat="server" 给一个 div 你应该可以访问它。

    【讨论】:

      【解决方案3】:

      如果它不是服务器端控件,则不能这样做..

      如果是 HTML 控件,则需要将 runat="server" 属性设置为 div,以便在后面的代码中找到它。

      【讨论】:

        【解决方案4】:

        试试

        HtmlGenericControl div = (HtmlGenericControl)this.FindControl("div1");
        

        注意:为了使此代码正常工作,您需要在 aspx 页面上具有 runat="server" 属性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-04
          • 2012-05-04
          • 1970-01-01
          • 2011-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多