我试图访问ModalPopupExtender控件,它总是返回null或对象集未设置为对象的intance。我已经尝试过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();
答案 0 :(得分:0)
你可以做到
MasterPage master = Page.Master;
答案 1 :(得分:0)
查看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; }
}
答案 2 :(得分:0)
如果您的网页是母版的孩子
试试这个:
AjaxControlToolkit.ModalPopupExtender popup = (AjaxControlToolkit.ModalPopupExtender)Page.Master.FindControl("ModalPopupExtender2");
此致