C# 当按钮位于更新面板内时,如何从内容页调用母版页方法?
我有一个母版页和一个内容页。在内容页面中,我有一个脚本管理器和一个更新面板。在“更新”面板中,我希望能够单击一个按钮,该按钮将点击母版页上的公共方法以显示消息。如果我在内容页上没有更新面板,这是可行的,但是当按钮在更新面板中时,有没有办法让它工作 母版页:C# 当按钮位于更新面板内时,如何从内容页调用母版页方法?,c#,asp.net,.net-4.0,C#,Asp.net,.net 4.0,我有一个母版页和一个内容页。在内容页面中,我有一个脚本管理器和一个更新面板。在“更新”面板中,我希望能够单击一个按钮,该按钮将点击母版页上的公共方法以显示消息。如果我在内容页上没有更新面板,这是可行的,但是当按钮在更新面板中时,有没有办法让它工作 母版页: public void ShowMessage(string Message) { lblError.Text = Message; lblError.Visible = True; } 内容页: Master.Sho
public void ShowMessage(string Message)
{
lblError.Text = Message;
lblError.Visible = True;
}
内容页:
Master.ShowMessage("something");
你需要
this.button1 = this.Master.FindControl("UpdatePanel1").FindControl("Button1") as Button;
下面是一个有助于描述过程的示例。基本上,你正在深入你的控制
编辑
对不起,我刚刚重读了你的问题。上面的代码将允许您从内容页codebehind中找到母版页上的按钮
从内容页执行Masterpage codebehind方法有点困难。更好的方法可能是在按钮上添加JavaScript事件(或者只使用jQuery),并将JavaScript代码放入母版页中
<!-- script stuff -->
<script>
$(function() {
$( "#dialog" ).dialog({
autoOpen: false
});
$( "#opener" ).click(function() {
$( "#dialog" ).dialog( "open" );
return false;
});
});
</script>
<!-- end script stuff -->
<!-- dialog div -->
<div id="dialog" title="Basic dialog">
<p>say something meaningful</p>
</div>
<!-- end dialog div -->
<!-- content page stuff -->
<button id="opener">open alert</button>
<!-- end content page stuff-->
$(函数(){
$(“#对话框”)。对话框({
自动打开:错误
});
$(“#开场白”)。单击(函数(){
$(“对话框”)。对话框(“打开”);
返回false;
});
});
说些有意义的话
开放警报
然而
如果你真的沉迷于从你的内容页面调用母版页方法,你需要公开这个方法
在中查找信息
内容页可以通过两种方式以编程方式与其母版页交互:
- 使用Page.Master属性返回对母版页的松散类型引用,或
- 通过@MasterType指令指定页面的母版页类型或文件路径;这会自动向名为Master的页面添加强类型属性
最后,我把脚本管理器放在母版页上,把标签放在母版页上的更新面板中。我觉得有点晚了,但对于那些正在寻找解决方案的人来说 假设您的母版页类为:
public MyMAsterPage: MasterPage
{
public void ShowMessage(string Message)
{
// DO SOMETHING
}
}
从内容页,您可以轻松调用任何公共方法,如下所示:
(this.Master as MyMasterPage).ShowMessage("Some argument");
母版页中定义的函数:
public void Mesaj(string msj)
{
lbl_Mesaj.Text = msj;
}
在内容页中定义的函数
protected void Page_Load(object sender, EventArgs e)
{
MasterPageWeb master = (MasterPageWeb)this.Master;
master.Mesaj("www.zafercomert.com");
}
您可以像这样从内容页调用masterpage的函数 基于阿明的解决方案,我更经常地使用扩展方法来解决这个问题
public static T GetMasterPageObject<T>(this MasterPage masterPage) where T : MasterPage
{
return (T)masterPage;
}
public static T GetMasterPageObject(此母版页母版页),其中T:MasterPage
{
返回(T)母版页;
}
例如:
this.Master.GetMasterPageObject<MasterPageClass>().MethodYouNeed("Parameters");
this.Master.GetMasterPageObject().MethodYouNeed(“参数”);
掌握方法();(在代码隐藏中)我已经能够调用这个方法了,就像我在问题中提到的,我唯一搞不清楚的是从更新面板调用。“如果我在内容页面上没有更新面板,那么这可以工作,但是当按钮在更新面板中时,有没有办法让它工作?”此页面也有一个代码