母版页和内容页面中的通信问题

时间:2009-10-29 12:09:44

标签: asp.net

我在我的网站上有一个母版页,并对母版页有一些控制权。 我想在内容页面上处理母版页控件事件。

我该怎么做......?

即使我使用这样的属性进行下拉控制

public  DropDownList propertymastercontrol
{
    get
    {
        return cmbVendor;   //drop down id
    }
}

并在内容页面上给出了主页的引用,如下所示......

<%@ MasterType VirtualPath ="~/MasterPage.master" %>

仍然无法获取内容page_load事件的任何控制事件..

protected void Page_Load(object sender, EventArgs e)
    {
        Master.
    }

可能是什么问题..?

4 个答案:

答案 0 :(得分:2)

我不确定C#,但在VB.NET中我已经完成了以下四个步骤:

  • 向后面的MasterPage代码添加事件,根据需要引发这些事件
  • 将其添加到内容aspx页面:<%@ MasterType VirtualPath="~/master.Master" %>
  • 添加事件处理程序以在内容页面代码隐藏上捕获事件(这是C#和VB.NET之间的差异)
  • 将您所需的代码添加到代码隐藏中的事件

更新:

从您的示例代码中,我可以看到您没有在MasterPage中引发事件(您可以回复内容页面)。我打算给出一个例子,但它与这篇帖子Pass MasterPage ImageButton event to content Page几乎完全相同,这个帖子也已经链接到了另一个SO用户。

答案 1 :(得分:0)

我假设page_Load事件位于代码隐藏部分。您必须在那里声明母版页文件以便能够提取母版页的内容。

将它放在on preInit:

this.MasterPageFile = "~/masterPage.master"; //change this to where your master page resides.

答案 2 :(得分:0)

看看我的这个问题,非常相似:

关键点,它的工作方式与常规.ASPX页面和UserControls相同。实际上,MasterPage成为内容页面的UserControl。

Pass MasterPage ImageButton event to content Page

答案 3 :(得分:0)

快速而肮脏的方法是在母版页中找到控件并将其连接起来。你的Page_Load看起来像这样:

protected void Page_Load(object sender, EventArgs e)    
{
    DropDownList cmbVendor = (DropDownList)Master.FindControl("cmbVendor");
    cmbVendor.TextChanged += new EventHandler(cmbVendor_TextChanged);
}

更简洁的方法是让MasterPage处理DropDown事件并引发它自己的事件。 Pass MasterPage ImageButton event to content Page接受的答案解释了如何执行此操作。