2016-11-24 10 views
0

У меня есть страница Site.Master и папки с отдельными «проектами», которые имеют свою собственный мастер-страницу, а также детализированную страница:Как получить доступ к элементам управления на странице Site.Master?

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

Я хочу использовать FindControl() в Project1.cs, чтобы найти метку, которая в Site.Master.

Я попытался this.Master.Master, но он возвращает нуль

Я попытался Page.Master или this.Master но относится к Project1.Master

Я попытался Page.Parent.Master но также возвращает нуль.

Любые идеи?

Благодаря

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"> 

заголовке Proje 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> 
... 
... 

UPDATE 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> 

UPDATE 3

Я думаю, Я знаю, что происходит. Файл Site.master может иметь HTML-теги, но не вложенный мастер-файл! Вложенная главная страница должна ссылаться только на Заполнители содержимого, так что она не сталкивается с тегами «выше» в файле site.master. Да?

+0

Does Project1.Master реализует Site.Master или это отдельная главная страница? –

+0

@JuniorJohn Hi. Нет. Это так же, как я рисовал. Site.Master - общая главная страница всего веб-сайта. Project1.Master - это главная страница Project1, которая является подпапкой на веб-сайте. Site.Master находится в корневой папке, Project1 - это подпапка. Я надеюсь, что в этом есть смысл. – Fandango68

+0

У вас есть аккаунт в Project1.Master? –

ответ

1

Привет, пожалуйста, ознакомьтесь с приведенным ниже примером. Я создал основную страницу BasicView, которая включает в себя основной вид, и я включил вложенную главную страницу, которая включает некоторые дополнительные элементы управления. Как вы можете видеть, ContentPlaceHolder1 в BasicView.master будет заменен на все html-код, который находится внутри ContentPlaceHolder1 в ExtraNested.master Вот как вы ссылаетесь и соединяете 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" /> 

Так что теперь внутри ExtraNested.master на Button1.click случае вы можете попытаться найти управления текстового поля в BasicView.master используя ваш код.

NB: BasicView имеет большинство HTML-кода, а ExtraNested использует BasicView html с добавлением некоторого дополнительного html, который он включает.

+0

Да, мой Update3 был на месте, и вы его подтвердили. спасибо – Fandango68

0

Звучит так, как будто вы ищете директиву MasterType.

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

В принципе, вы поставите директиву MasterType на ваших главных страниц ребенка и ссылки Site.Master использования.

+0

Спасибо. Я прочитал эту статью, но я все еще не понимаю, как я могу перейти с страницы aspx под MasterPage, которая имеет даже «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

Смежные вопросы