访问
  • 标签,ASP.NET
  • 发布于 2024-09-11 03:40:03 字数 279 浏览 6 评论 0 原文

    我正在尝试访问第一个母版页文件中的

  • 标记。我尝试了 FindControl(..) 但它总是返回 null。
  • 结构:

    • 第一个母版页(其中包含
    • >
    • 第二个母版页
    • Default.aspx(需要在此处访问)

    我需要做什么才能访问黎元素?

    I'm trying to access a <li> tag in my first master page file. I tried FindControl(..) but it allways returns null.

    Structure:

    • First Master Page (which contains <li id="element" runat="server">
    • Second Master Page
    • Default.aspx (need to access here)

    What do I need to do to access the li element?

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(4

    呆萌少年 2024-09-18 03:40:03

    您通常会像这样访问服务器端控件:

    Page.Master.FindControl("controlID");
    

    但是,如果您的标记未设置为 runat="server",则您必须以其他方式找到它,例如获取结果响应.内容并在某个时候更改它。

    编辑:由于您使用的是嵌套母版页,因此如果您想要到达“根”母版页并在其中查找控件,则可能需要在控件层次结构中进一步返回。

    也许: Control li = Page.Master.Master.FindControl("controlID")

    You would usually access a server-side control like so:

    Page.Master.FindControl("controlID");
    

    However, if your tag is not set to runat="server", you'll have to find it another way, such as getting the resulting Response.Content and changing it at some point.

    EDIT: Since you're using nested master pages, you may need to go further back in the control hierarchy if you want to reach the "root" master and find a control in it.

    Maybe: Control li = Page.Master.Master.FindControl("controlID")

    偏闹i 2024-09-18 03:40:03

    您可能忘记了 runat=server

    代码会有所帮助。

    You might have forgotten runat=server

    Code would help.

    雨落星ぅ辰 2024-09-18 03:40:03

    是否有可能您的母版页没有正确继承?

    Is it possible you don't have your master pages inheriting correctly?

    我早已燃尽 2024-09-18 03:40:03

    您需要创建一个递归地查找控制的函数。像这样的东西:

    public control FIndControlEx(COntrolsCollection controls, string id)
    {
    
       foreeach(Control ctrl in controls)
       {
          if (ctrl.id == id)
             return ctrl;
          var result = FindCOntrolEx(ctrl.Controls, id);
          if (result != null)
            return result;
       }
    }
    

    You need to create a function which do find control recursively. SOmething like:

    public control FIndControlEx(COntrolsCollection controls, string id)
    {
    
       foreeach(Control ctrl in controls)
       {
          if (ctrl.id == id)
             return ctrl;
          var result = FindCOntrolEx(ctrl.Controls, id);
          if (result != null)
            return result;
       }
    }
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文