none
É Possivel Criar Duas Master Pages?????????? RRS feed

Respostas

  • Olá Seed,

    Abaixo segue um exemplo de como pode ser... Neste caso, são 2 MasterPages (uma "mãe" outra "filha") e 1 WebForm (filho da MasterPage filha), mas nada impede que você também crie WebForms filhos da MasterPage "mãe", aí vai da sua necessidade...

    Qualquer dúvida, post aí!

    MasterPage "Mãe":

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="DDP_UIWeb.Site" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head id="Head" runat="server">
        <title>Nome da página</title>
        <asp:ContentPlaceHolder ID="ContentSiteHead" runat="server">
        </asp:ContentPlaceHolder>
      </head>
    
      <body>
    		<form id="form1" runat="server">
    			<asp:ContentPlaceHolder ID="ContentSite" runat="server"/>		
    		</form>	
      </body>
    </html>
    

    MasterPage "Filha":

    <%@ Master Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Paginas.Master.cs" Inherits="DDP_UIWeb.Paginas" %>
    
    <asp:Content ID="ContentPaginasHead" ContentPlaceHolderID="ContentSiteHead" runat="server">
      <asp:ContentPlaceHolder ID="Head" runat="server">
      </asp:ContentPlaceHolder>
    </asp:Content>
    
    <asp:Content ID="ContentPaginas" ContentPlaceHolderID="ContentSite" runat="server">
    	<asp:ContentPlaceHolder ID="Content" runat="server">		
    	</asp:ContentPlaceHolder>
    </asp:Content>
    
    

     

    WebForm que tem como "mãe" a MasterPage "Filha":

    <%@ Page Title="" Language="C#" MasterPageFile="~/Paginas.Master" AutoEventWireup="true" CodeBehind="Disciplina.aspx.cs" Inherits="DDP_UIWeb.Disciplina" %>
    
    <asp:Content ID="ContentDisciplinaHead" ContentPlaceHolderID="Head" runat="server">  
    </asp:Content>
    
    <asp:Content ID="ContentDisciplina" ContentPlaceHolderID="Content" runat="server">
    	Conteúdo do seu WebForm
    </asp:Content>
    
    

    Abraço!!


    Luiz Fernando Bueno
    • Marcado como Resposta SEED 2010 terça-feira, 7 de junho de 2011 13:19
    terça-feira, 7 de junho de 2011 12:07

Todas as Respostas

  • Sim... Você pode criar quantas você quiser...

    Você só precisa apontar a masterpage desejada na página de conteúdo.

    Ex:

    <%@ Page Language="C#" MasterPageFile="~/MasterPage1.Master"
      AutoEventWireup="true" CodeBehind="Page1.aspx.cs" Inherits="Page1" %>
    
    <%@ Page Language="C#" MasterPageFile="~/MasterPage2.Master"
      AutoEventWireup="true" CodeBehind="Page2.aspx.cs" Inherits="Page2" %>

    Abraço,


    Carlos Eduardo Ferreira
    segunda-feira, 6 de junho de 2011 14:07
  • valeu ....mas ja fiz isto e até la tudo bem o problema vem quando eu criar um webform que herda a segunda master

    ai da erro

     

    outra coisa eu queria que o meu master page segundario tambem herdase a primeira

     

    so que ela vai ter outras informações especificas

     

    ...


    segunda-feira, 6 de junho de 2011 14:29
  • A lógica é a mesma: a MasterFilha herda da MasterPai, e o WebForm herda da MasterFilha.

    Dê uma olhada nesse link:

    http://www.webmaster.pt/hierarquia-masterpage-1538.html

    Abraço,


    Carlos Eduardo Ferreira
    segunda-feira, 6 de junho de 2011 16:07
  • valeu cara!!

    mas não funcionou, o problema acontece quando eu criar um webForm que herda MasterFilha- porque ele não herdar o content do masterPai e se eu inserir no MasterFilha da erro no WebForm

    outra coisa não estou a usar no mesmo directório talvez seja por isso tb ....

     

    segunda-feira, 6 de junho de 2011 18:52
  • Olá Seed,

    Semana passada usei Master dentro de Master, Webform com a última Master, WebForm com a primeira Master, e funciona sim... Eu estava com problema em acessar um objeto da primeira Master direto do WebForm que tá nessa thread (http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/2d4e748a-9c81-4653-8d55-36da24640e2a).

    Uma dica, preste atenção na identificação dos "asp:ContentPlaceHolder" e "asp:Content", em algum momento tive erro na Webform porque estava usando nome da Content quando deveria usar da ContentPlaceHolder.

    No link que postei a solução da thread citada acima, é feito uso de Master dentro de Master e de acesso de objetos das Masters direto dos WebForms.

    Espero ter ajudado!

    Abraço!!


    Luiz Fernando Bueno
    segunda-feira, 6 de junho de 2011 21:54
  • Ola Luiz BLZ

    cara sou iniciante e esta muito dificel pra mim ... se tiveres algum exemplo ou coisa do tipo dava bom jeito..

     

    terça-feira, 7 de junho de 2011 11:24
  • Luis

    o meu problema e que não estou sabendo onde colocar os codigos ????

     

    terça-feira, 7 de junho de 2011 11:27
  • Olá Seed,

    Abaixo segue um exemplo de como pode ser... Neste caso, são 2 MasterPages (uma "mãe" outra "filha") e 1 WebForm (filho da MasterPage filha), mas nada impede que você também crie WebForms filhos da MasterPage "mãe", aí vai da sua necessidade...

    Qualquer dúvida, post aí!

    MasterPage "Mãe":

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="DDP_UIWeb.Site" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head id="Head" runat="server">
        <title>Nome da página</title>
        <asp:ContentPlaceHolder ID="ContentSiteHead" runat="server">
        </asp:ContentPlaceHolder>
      </head>
    
      <body>
    		<form id="form1" runat="server">
    			<asp:ContentPlaceHolder ID="ContentSite" runat="server"/>		
    		</form>	
      </body>
    </html>
    

    MasterPage "Filha":

    <%@ Master Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Paginas.Master.cs" Inherits="DDP_UIWeb.Paginas" %>
    
    <asp:Content ID="ContentPaginasHead" ContentPlaceHolderID="ContentSiteHead" runat="server">
      <asp:ContentPlaceHolder ID="Head" runat="server">
      </asp:ContentPlaceHolder>
    </asp:Content>
    
    <asp:Content ID="ContentPaginas" ContentPlaceHolderID="ContentSite" runat="server">
    	<asp:ContentPlaceHolder ID="Content" runat="server">		
    	</asp:ContentPlaceHolder>
    </asp:Content>
    
    

     

    WebForm que tem como "mãe" a MasterPage "Filha":

    <%@ Page Title="" Language="C#" MasterPageFile="~/Paginas.Master" AutoEventWireup="true" CodeBehind="Disciplina.aspx.cs" Inherits="DDP_UIWeb.Disciplina" %>
    
    <asp:Content ID="ContentDisciplinaHead" ContentPlaceHolderID="Head" runat="server">  
    </asp:Content>
    
    <asp:Content ID="ContentDisciplina" ContentPlaceHolderID="Content" runat="server">
    	Conteúdo do seu WebForm
    </asp:Content>
    
    

    Abraço!!


    Luiz Fernando Bueno
    • Marcado como Resposta SEED 2010 terça-feira, 7 de junho de 2011 13:19
    terça-feira, 7 de junho de 2011 12:07
  • valeu cara, mas ainda não funcionou e acho que por causa do

     

     

     

    Inherits

    outra coisa o que é DDP_UIWeb.Paginas ?

    terça-feira, 7 de junho de 2011 12:19
  • ola Luiz

    olha eu estou a usar os masters en directorios diferentes

    outra coisa e sobre o content , me esplica isso melhor qual é que devo usar no primeiro e no segundo porque esta a dar erros no content

    terça-feira, 7 de junho de 2011 12:32
  • Seed,

    Não copie pro seu código o que for <% %>, essas informações são geradas automaticamente quando você cria suas páginas (WebForm ou MasterPage), copie todo o demais, mas não as <% %>.

    Vá em add new item e adicione página por página, master mãe, master filha e webform, ao adicionar vc já irá informar quem é a MasterPage de cada página (exceto da Master mãe que não tem), assim seu "inherits" e as outras informções estarão todas corretas já.

    Obs.: Sobre a pergunta do que é "DDP_UIWeb.Paginas", "DDP_UIWeb" é o namespace e "Paginas" é a classe criada para a MasterPage "Paginas", essas informações estão no "aspx.cs", toda página funciona assim.

    Qualquer coisa post aí!

    Abraço!!


    Luiz Fernando Bueno
    terça-feira, 7 de junho de 2011 12:58
  • valeu!!

    cara eu fiz uns teste ai e descobri que se for tudo no mesmo directorio funciona, tambem se os master estiverem tambem no mesmo directorio funciona, so não funciona se estiver em directorios diferentes

     

    testa ai e da um feedback

     

     

    terça-feira, 7 de junho de 2011 13:10
  • cara eu acho que o meu VS e que esta com problemas, porque fiz um projecto novo e funcionou na boa

     

    valeu

    obrigadão

    ...

    outra coisas estou a fazer o meu projecto final e tenho que entregar ate 30 de junho estou a ter muitos problemas...

    ai se poderes enviar seu mail para dar umas ajudinha aqui seria bom

    terça-feira, 7 de junho de 2011 13:19
  • Seed, mesmo em diretórios diferentes funciona sim, o que muda é que quando for referenciar a Master em outro diretório deve informar o caminho relativo correto, só isso. Quando vc usa "~/" junto do nome do arquivo está informando que está partindo do diretório raiz da sua aplicação, é só questão de informar o caminho correto.

    Meu e-mail é fernandobueno.net@gmail.com, mas prefira usar o fórum, pois assim muito mais pessoas poderão te ajudar e a sua dúvida pode ser a dúvida de outra pessoa também.

    Abraço!!


    Luiz Fernando Bueno
    terça-feira, 7 de junho de 2011 13:34
  • Valeu cara ...Obrigadão...
    quarta-feira, 8 de junho de 2011 12:25