2010-06-02 46 views
1

我试图使默认的模式框必须可以从应用程序的任何部分访问,并且需要在任何页面内部随时调用。 (必须从代码隐藏中调用)。调用(显示)位于MasterPage中的模式弹出窗口从它的孩子

所以我想出了一个Panel + modalPopupExtender置于MasterPage中,并通过代码隐藏从子页面调用它的想法。

我该怎么做?或者也许你们有更好的主意来解决这个问题。

+0

如果这种行为方式不同,比如,重定向到另一个页面,一旦对话已经处理了回来?或者我感到困惑,并且“代码隐藏”是指页面中的一些JavaScript? – Jens 2010-06-02 14:13:58

+0

只是想显示一个模式框,用户可以阅读,然后关闭。 (后面的代码= .cs文件) – 2010-06-02 14:19:12

回答

3

由于模式是从后面的代码调用,就可以实现像这样

的方法添加到您的母版页

public class MyMaster : MasterPage 
{ 
    public void ShowModal(string someParameter) 
    { 
      // Do your logic here 
      // Show the modal 
    } 
} 

随后的方法添加到您的网页,或这样的页面基...

public void ShowModal(string someParameter) 
{ 
    MyMaster masterPage = this.Master as MyMaster; 
    masterPage.ShowModal(someParameter); 
} 

我推荐使用基类为哟你的页面,这样你就不必复制上述方法。

+0

这将肯定工作,如果我使用modalPopupExtender,但如果我想显示一些其他面板或div,使用类似ajax(updatepanels将无法正常工作,因为触发器'吨在同一页)? – 2010-06-08 15:30:12

+0

这是真的。您可以创建一个用户控件,利用共享的JavaScript代码来使用AJAX提取内容并以弹出模式显示它们。 – ctorx 2010-06-15 15:47:54

1

将方法添加到您的母版页。例如:

public void ShowMpSignup4free() 
{ 
    mpSignup4free.Show(); 
} 

然后从代码调用此方法页面背后这样的:

protected void lbSignin_Click(object sender, EventArgs e) 
{ 
    MasterPages_WebMasterPage wm = (MasterPages_WebMasterPage)(this.Master); 
    wm.ShowMpSignup4free(); 
} 

这里mpSignup4free被ModelPopupExtender和MasterPages_WebMasterPage的ID是主页的名称(WebMasterPage被主页的名称放置在MasterPages文件夹中,这就是为什么母版页的完整名称是MasterPages_WebMasterPage)。

和lbSignin是主页面为WebMasterPage的页面上的链接按钮,其单击事件将显示模型弹出窗口。

为了避免回后放在UpdatePanel中的lbSignin链接按钮...