2016-11-24 83 views
0

我有一個網頁的Site.Master與個人「項目」的文件夾,每個都有自己的母版頁,以及詳細頁面:如何訪問Site.Master頁面中的控件?

~/Site.Master 
     myProject/Project1.Master 
     myProject/Project1.aspx 
     myProject/Project1.cs 

我想使用Project1.csFindControl()找到一個標籤,這是在Site.Master

我試過this.Master.Master,但它返回null

我已經試過Page.Masterthis.Master而是指Project1.Master

我試過Page.Parent.Master但也返回null。

任何想法?

感謝

UPDATE

Site.Master頁面這個指令......

<%@ Master Language="C#" CodeFile="Site.master.cs" Inherits="Site" %> 

Project1.master文件有這些...

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="TradeEduTeams.master.cs" Inherits="TET_system" %> 
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    Namespace="System.Web.UI" TagPrefix="asp" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

的的頭幻燈ct1.master ...

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Trade Education Teams System (TETs)</title> 
    <asp:ContentPlaceHolder id="ContentPlaceHolderHead" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
... 
... 

更新2

這裏是充滿我的Site.Master頁...

<%@ Master Language="C#" CodeFile="Site.master.cs" Inherits="Site" %> 
<html> 
<head id="Head1" runat="server"> 
    <title>Mitec</title> 
</head> 
<body > 
    <form id="form1" runat="server"> 
     <table width="100%"> 
      <tr valign="top" align="center" > 
       <td align="left"> 
        <asp:Image ID="Image2" runat="server" ImageUrl="~/images/Tec-NQ-RGB-218x90.jpg" /> 
       </td> 
       <td align="center"> 
        <table> 
         <tr> 
          <td align="center"> 
           <asp:Image ID="Image3" runat="server" ImageUrl="~/images/mitec.jpg" /> 
          </td> 
         </tr> 
         <tr> 
          <td align="center"> 
           <asp:LoginName Font-Names="Times New Roman" Font-Size="1.2em" ID="LoginName1" FormatString="login: {0}" 
            CssClass="loginname" runat="server" /> 
          </td> 
         </tr> 
        </table> 
       </td> 
       <td align="right"> 
        <asp:Image ID="Image1" runat="server" ImageUrl="~/images/Tec-NQ-RGB-218x90.jpg" /> 
       </td> 
      </tr> 
      <tr><td colspan="3">&nbsp;</td></tr> 
      <tr> 
      <td colspan="3"> 
       <table> 
       <tr> 
       <td style="width:20%" valign="top"> 
        <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" ImageSet="Arrows" ExpandDepth="1" OnTreeNodeDataBound="TreeNode_DataBound" OnDataBound="Tree_DataBound" 
         OnTreeNodeExpanded="TreeNode_Expanded" OnTreeNodeCollapsed="TreeNode_Collapsed" LineImagesFolder="~/TreeLineImages" ShowLines="True"> 
         <ParentNodeStyle Font-Bold="False" /> 
         <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" /> 
         <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px" 
          VerticalPadding="0px" /> 
         <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px" 
          NodeSpacing="0px" VerticalPadding="0px" /> 
        </asp:TreeView> 
        <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 
        <div class="menu"> 
        </div> 
       </td> 
       <td align="center" style="width:60%" colspan="2" valign="top"> 
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
        </asp:ContentPlaceHolder> 
       </td> 
       </tr> 
       </table> 
      </td> 
      </tr> 
     </table> 
    </form> 
</body> 
</html> 

更新3

我想我知道發生了什麼事。 Site.master文件可以有HTML標籤,但不是嵌套的主文件!嵌套母版頁必須僅參考內容佔位符,以便它不會與site.master文件中的「較高」標籤衝突。是?

+0

Project1.Master是否實現Site.Master還是獨立的母版頁? –

+0

@JuniorJohn嗨。不,它就像我畫的那樣。 Site.Master是整個網站的總體主頁面。 Project1.Master是Project1的母版頁,它是網站中的子文件夾。 Site.Master位於根文件夾中,Project1是一個子文件夾。我希望這是有道理的。 – Fandango68

+0

您可以在描述中添加Project1.Master的標題嗎? –

回答

1

嗨,請檢查下面的例子,我已經創建了一個包含主視圖的BasicView母版頁,並且我包含了一個嵌套的母版頁,其中包含一些額外的控件..如您所見,BasicView.master中的ContentPlaceHolder1將替換爲ExtraNested.master中的ContentPlaceHolder1中的所有html代碼 這是您如何引用並連接2個母版頁的方式。

BasicVew。主:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="BasicView.master.cs" Inherits="WebApplication4.BasicView" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<div> 
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 

    </asp:ContentPlaceHolder> 
</div> 
</form> 

ExtraNested.master

<%@ Master Language="C#" MasterPageFile="~/BasicView.Master" AutoEventWireup="true" CodeBehind="ExtraNested.master.cs" Inherits="WebApplication4.ExtraNested" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<asp:Button ID="Button1" runat="server" Text="Button" /> 

所以現在Button1.click事件中ExtraNested.master您可以嘗試找到BasicView.master控制文本框使用你的代碼。

注意:BasicView具有大部分HTML代碼,而ExtraNested使用BasicView html,並附加了一些額外的HTML。

+0

是的,我的Update3是現貨,你已經證實了它。謝謝 – Fandango68

0

聽起來好像您正在尋找MasterType指令。

https://msdn.microsoft.com/en-us/library/c8y19k6h.aspx

基本上,你把指令的MasterType你的孩子母版頁和參考的Site.Master使用它。

+0

謝謝。我讀過那篇文章,但我仍然不明白我如何從MasterPage下的aspx頁面跳轉,該頁面有一個甚至是「更高階」的MasterPage(SiteMaster)。我必須首先引用ContentPlaceholder *然後* MasterPage?在我的情況下,我的代碼位於表單標記內,而不是ContentPlaceHolder。 – Fandango68

+0

我知道MasterType,但是,如何在Site.Master頁面上找到我的控件? MS頁面上的示例具有誤導性。沒有Master.FindControl()。我必須更具體一些,比如Page.Master.FindControl(),但是指的是Project1.master,而不是SiteMaster。 – Fandango68

+0

我已經添加了另一個Update2,完整顯示了我的Site.master。查看沒有ContentPlaceHolder。我當然不應該把一個放在那裏? – Fandango68

相關問題