如何从母版页调用内容页面功能

时间:2011-11-17 10:55:08

标签: c# master-pages

必须从母版页调用内容页面功能。 如果需要更多数据,请告诉我。

MasterPage.master.cs看起来像

 protected void Required_Function(object sender, EventArgs e)
 {
    // call Update_Content_Page() from content page 
 }

Default.aspx看起来像

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="contentPlaceHolder" Runat="Server">

<asp:Label ID="Label1" runat="server" Text="Label">Hello people!</asp:Label>

</asp:Content>

Default.aspx.cs看起来像

using…
public partial class _Default : System.Web.UI.Page
{ 
    protected void Update_Content_Page()
    {
        Label1.Text=”Hello world”;
    }
}

3 个答案:

答案 0 :(得分:6)

你可以尝试这样..不完全但会帮助你.....

您可以从基类继承您的页面。然后,您可以在基类中创建一个虚拟方法,该方法将在您的页面中被覆盖。然后,您可以从主页面调用该虚拟方法,如下所示 -

(cphPage.Page as PageBase).YourMethod();

此处, cphPage 是您母版页中 ContentPlaceHolder 的ID。 PageBase 是包含 YourMethod 方法的基类。

答案 1 :(得分:1)

我经常发现当MasterPage需要在ContentPage中调用函数时,您的页面设计存在缺陷。 MasterPage不需要知道有关ContentPages的任何信息。但如果您认为这是正确的方法,请参阅CodeProject的guide

答案 2 :(得分:1)

我个人使用jquery做了一个技巧:当我点击主按钮时,它实际上点击了名为&#39; saveButton&#39;的内容页面按钮。并使用了它的功能:

HTML:

enter code here

.master jquery code:

function tester() {
        console.log("Testing");
        $("[id$='SaveButton']").click();
    }

我用id $ =&#39; SaveButton&#39;正如您现在可能知道的那样,ASP.NET在主控,转发器,网格视图和其他包含控件内部时重命名控件。 $ ID =&#39;东西&#39;验证控件ID以&#39; stuff&#39;结尾。