2011-06-28 88 views
0

我有一個奇怪的場景,但這是它在我之前的設計。基本上我有用戶控件,並有一個child.masterpage從UserControl到父母母版頁面

在用戶控件中包含的ASCX文件中的以下

<div><%=_template%></div> 

的child.masterpage從parent.masterpage繼承,在child.masterpage還有的用戶控件的調用

<asp:Content><ucc:UserControl></ucc> 

的parent.masterpage中有其他領域,它與C#功能的cs文件

public void passVal(string s) 

現在我想要做的是將用戶控件的值直接傳遞給parent.masterpage函數,以便我可以將它放入我創建的parent.masterpage文字中。我怎樣才能達到這個目標(再次,這是現有的設計,我不能轉身)我只是增加了一個功能。

<%@ Master Language="C#" AutoEventWireup="true" MasterPageFile="../common/main.master" %> 
<%@ Register Src="UserControl.ascx" TagName="Ord" TagPrefix="uc" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server"> 
<div class="in"><uc:OrderReceipt ID="myord" runat="server" Visible="true"/> 
<div style="margin-bottom:30px;"> 
<a href="~/" id="HomeLink" runat="server" class="BackLink">Back to Home Page</a> 
</div> 
</asp:Content> 

回答

0

您可以使用Page.Master屬性來獲取主頁面實例。

protected someEvent(object sender, EventArgs e) 
{ 
    (Page.Master as ChildMaster).passVal("some string"); 
} 

更多的答案:

我只是審查您的OP和實現的東西。令我困惑的代碼是用戶控制。

在它 包含ASCX文件的用戶控件

<div><%=_template%></div>

我還沒有看到背後的代碼,但我的猜測是,用戶控件只是用來輸出以下動態HTML。我敢打賭,如果您查看用戶控件背後的代碼(.cs文件),您會發現一個名爲_template的變量。它是一個字符串變量,在運行時用html抽取。

現在不回答你的問題,但是,如果你還不知道這...這是好事,知道= P

現在,下一個謎是關於背後的缺碼的一個文件的子主頁面。

我的理論是,無論是誰做的,都會造成一些錯誤,導致它不會自動生成代碼後面的代碼。或者,他們從頭開始,只是簡單地將其添加到項目中,但忽略了代碼。

我做了一個母版頁,然後又做了一個叫做child的。我能夠繼承它,這裏是標記和代碼背後的樣子。

<%@ Master Language="C#" MasterPageFile="~/Master.master" AutoEventWireup="true" CodeFile="Child.master.cs" Inherits="Child" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server"> 
</asp:Content> 

public partial class Child : Master 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

在比較標記你的,這裏的關鍵區別是,我的明確提到了CodeFile屬性。

按照命名約定創建一個新的cs文件。然後將CodeFileInherits屬性添加到您的子母版頁面。這應該正確地連接所有的東西,並允許你開始向孩子母版頁添加方法等。

讓我知道你在,我們就會把它從那裏。 GL

+0

但你看我有兩位主人?而我在用戶控件,我應該把MyMasterType,而不是(我在用戶控件).. 我看不到我的方法。我試過Page.master.master作爲母版 – user710502

+0

@ user710502 ...沒」您是否聲明childMaster只是parentMaster的子類?如果你在parentMaster中有一個公共方法...它由於繼承而在childMaster中可用並公開。 –

+0

儘管我在UserControl(child.master)中沒有.cs文件?裸露在我我是一個新手在C# – user710502