【问题标题】:Find Control on MasterPage returns nulll母版页上的查找控件返回 null
【发布时间】:2012-02-23 23:28:02
【问题描述】:

我试图访问 ModalPopupExtender 控件,它总是返回 null 或对象集未设置为对象的实例。我已经尝试过 master.Page.FindControl("") 和 master.FindControl("") 但我仍然没有得到结果

MasterPage master = Page.Master as MasterPage;
AjaxControlToolkit.ModalPopupExtender popup = master.Page.FindControl("ModalPopupExtender2") as AjaxControlToolkit.ModalPopupExtender;

更新:无法更改母版页中标签的文本

MasterPage master = Page.Master;
AjaxControlToolkit.ModalPopupExtender popup1 = master.FindControl("ModalPopupExtender1") as AjaxControlToolkit.ModalPopupExtender;
Label lblMessage = master.FindControl("lblMessage") as Label;
lblMessage.Text = msg;
Literal ltrlMessage = master.FindControl("ltrlMessage") as Literal;
ltrlMessage.Text = msg;

Label MessageStatus = master.FindControl("lblMessageStatus") as Label;
MessageStatus.Text = msgStatus;        
popup1.Show();

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    你可以这样做

        MasterPage master = Page.Master;
    

    【讨论】:

      【解决方案2】:

      如果您的页面是母版页的子页面

      试试这个:

      AjaxControlToolkit.ModalPopupExtender popup = (AjaxControlToolkit.ModalPopupExtender)Page.Master.FindControl("ModalPopupExtender2");
      

      问候

      【讨论】:

        【解决方案3】:

        查看this 答案。你可以有一个strongly typed master page,所以你不必找到然后施放控件。母版上的控件可以公开访问,并且页面会知道母版页的类型并可以访问。

        编辑:

        控件不公开

        假设您在页面指令中设置了 Master 属性:

        <%@ Page MasterPageFile="~/MyMaster.master" ...
        

        很可能,您可能不需要实际使用控件。相反,您需要在母版页中设置一些内容。我只是使用内部方法来做你需要做的事情:

        public partial class MyMaster: MasterPage
        {
            internal void SetTheFoo(string foo)
            {
                this.WhateverControl.Text = foo;
            }
        
            //etc...
        }
        

        然后,从您的页面中调用它:

        Master.SetTheFoo("Foo");
        

        如果您仍然需要访问该控件,那么在您的母版页中,您可以添加一个公开您的模态弹出扩展器的公共属性。

        public AjaxControlToolkit.ModalPopupExtender MyModalPopup
        {
            get { return this.TheNonPublicModalPopupExtenderControl; }
        
        }
        

        【讨论】:

        • 我已经更新了我的代码,我可以访问 PopupExtender 但我无法更改标签文本属性你知道如何将文本更改为我的消息
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 2015-12-04
        • 2014-09-25
        • 2010-10-18
        相关资源
        最近更新 更多