Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当按钮位于更新面板内时,如何从内容页调用母版页方法?_C#_Asp.net_.net 4.0 - Fatal编程技术网

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(“参数”);


掌握方法();(在代码隐藏中)

我已经能够调用这个方法了,就像我在问题中提到的,我唯一搞不清楚的是从更新面板调用。“如果我在内容页面上没有更新面板,那么这可以工作,但是当按钮在更新面板中时,有没有办法让它工作?”此页面也有一个代码