Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to handle master page button event in content page?

There's more than question and article about the same exact question but I have a couple more related questions and was hoping to get some answers.

  1. I've heard of two approaches to find the button and add the handler or use an interface (Check both approaches from here) .. Which one do you suggest ?

  2. If you could please illustrate the 'Interface' option with some code and where to class the interface file cause it's not readable in the page when I try to inherit it!

like image 688
Mazen Elkashef Avatar asked Apr 16 '11 14:04

Mazen Elkashef


1 Answers

Second aproach is IMO better. The first choice couples a page to the specific master page, and it is not nice.

All files are placed in the same folder.

IPageInterface.cs:

namespace CallFromMasterPage
{
    public interface IPageInterface
    {
        void DoSomeAction();
    }
}

Default.aspx.cs:

namespace CallFromMasterPage
{
    public partial class Default : System.Web.UI.Page, IPageInterface
    {
        public void DoSomeAction()
        {
            throw new NotImplementedException();
        }
    }
}

Site.Master.cs:

namespace CallFromMasterPage
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            IPageInterface pageInterface = Page as IPageInterface;
            if (pageInterface != null)
            {
                pageInterface.DoSomeAction();
            }
        }
    }
}

There are other approaches. E.g. you can publish an event via event broker.

like image 57
Jakub Linhart Avatar answered Oct 17 '22 01:10

Jakub Linhart