Microsoft Developer Network > Página Inicial dos Fóruns > Fóruns do Web Development > ASP .NET > Master Page pode ser usada em todos projetos?
Fazer uma PerguntaFazer uma Pergunta
 

RespondidoMaster Page pode ser usada em todos projetos?

  • quarta-feira, 4 de novembro de 2009 18:38Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Estou trabalhando em um projeto com estrutura de portal, e gostaria de criar apenas uma MasterPage para isso, porem estou encontrando dificuldade na minha estrutura, pois dentro do portal existem micro sisteminhas com caracteristicas diferentes e quando tento acessar a masterpage que esta na raiz apartir desses sisteminhas, me retorna este erro:

    The virtual path '/sitenovo/Master.master' maps to another application, which is not allowed.

    tem alguma solução para isso?


    Desenvolvedor Web

Respostas

  • sexta-feira, 6 de novembro de 2009 12:45Harley AraujoMSFT, ModeradorMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Bom dia Daniel !

    O que foi sugerido neste trecho que você colocou é:

    - Crie um Diretorio ex: C:/MasterPages
    - Crie um diretorio Virtual: Site1
    - Crie um diretorio virtual em Site1 apontando para o C:/MasterPages

    Chame sua masterpage passando o caminho ex: Site1/MasterPages/Page.Master fazendo isso quando você atualizar os arquivos em C:/Master todas as aplicações serão afetadas.

    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Atenciosamente,
    Harley Araujo
    • Marcado como RespostaDaniel Dac sexta-feira, 6 de novembro de 2009 13:16
    •  
  • sexta-feira, 6 de novembro de 2009 16:40Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    O esquema é a estrutura dos Diretórios Virtuais, como exemplo irei colocar a estrutura detalhada q estou usando:

    wwwroot
    |
    |_Portal (Aqui fica a raiz do meu Portal e é criado um Diretório Virtual)
       |_App_Data
       |_App_Code
       |_Pasta1
       |_Sistemas
          |_Aplicacao1 (Aqui tenho uma aplicação independente e tambem é um Diretório Virtual)
             |_App_Data
             |_App_Code
             |_Master (AQUI É ESTA A SOLUÇÃO: Crie esse diretório virtual, apenas no IIS e aponte para a raiz('Portal' neste caso), ou o diretorio que esta sua master page)
             |_Default.aspx ****
          
          |_Aplicacao2 (Aqui tenho uma aplicação independente e tambem é um Diretório Virtual)
       |
       |_Master.master (MasterPage que esta na raiz do portal)
       |_Arquivos.aspx


    **** = No arquivo criado dentro da aplicação é necessario modificar o caminho da master page para o caminho do diretorio virtual criado da seguinte forma seguindo o exemplo a cima:

    MasterPageFile="/Portal/Sistema/Aplicacao1 /Master/Master.master"

    Da um pouco de trabalho, mas facilita os Designer e concentra a MasterPage que ja é um grande ganho.

    Espero q tenham entendido.. tentei detalhar ao maximo pq pra entender isso nos artigos que encontrei foi uma luta hehe
    Desenvolvedor Web
    • Marcado como RespostaDaniel Dac sexta-feira, 6 de novembro de 2009 16:40
    •  

Todas as Respostas

  • quarta-feira, 4 de novembro de 2009 18:54kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
  • quarta-feira, 4 de novembro de 2009 19:08Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Pelo que entendi seria o uso do ~ , porem ja é assim, mas o erro acontece da mesma forma, como falei a raiz é um diretorio virtual(uma aplicação),  e algumas das sub pastas tambem é um diretorio virtual (uma aplicação), e não deixa eu usar a master page da aplicação q esta na raiz.
    Desenvolvedor Web
  • quarta-feira, 4 de novembro de 2009 19:36Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    alguem ja passo por isso?
    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 0:28kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Daniel,

       Esse caminho que você está seguindo é realmente bem difícil pois o Asp.Net não dá suporte à essa técnica facilmente.
       Encontrei esse link que mostra uma maneira de fazer isso que você quer, porém é difícil. Se for seguir os passos leia com atenção.

       "Sharing Master Pages"
       http://social.msdn.microsoft.com/forums/pt-BR/aspnetpt/thread/cb4f1166-b219-46f5-baba-6baf6c213ae9/ 

       "MasterPage Genérica"
       http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/22f46b00-58f3-4b49-ba88-1780f8c7e0eb 

       "Herança Entre Projetos" 
       http://www.scriptbrasil.com.br/forum/lofiversion/index.php/t122292.html 
  • quinta-feira, 5 de novembro de 2009 3:23Dennes Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Oi,

    Neste artigo - http://www.bufaloinfo.com.br/artigos/coluna38.asp - ao final do artigo existe um exemplo de como transformar um user control (.ascx) em um arquivo .dll que possa ser re-utilizado em múltiplos projetos.

    O mesmo passo-a-passo pode ser utilizado também para a master page, transformando uma master page em um arquivo .dll que pode ser re-utilizado em múltiplos sites.

    []'s
    Dennes
    http://twitter.com/Dennes

    * Treinamento C# e Framework .NET c/OO dia  07/11 - Apenas 12 R$ 42,53  Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp

    * Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp

    Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
    http://www.bufaloinfo.com.br

     

     


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
  • quinta-feira, 5 de novembro de 2009 12:22Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Deixa eu tirar umas duvidas:

    1) Neste caso terei que criar um website pra cada WUC e Master page para poder usar essa tecnica de transformar em dll?

    2) tendo em vista o seguinte cenario:
     
     Tenho um portal, onde a raiz é um diretório virtual apenas para conter e concentrar todas imagens, pastas,MasterPages, WUC, etc.. e dentro de algumas pastas seriam aplicações 'independentes', algumas necessitando de configurações diferenciadas como mebership.
     O que voce aconselha a fazer? É possivel ter somente esse diretorio virtual criado e mais de um web.config?


    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 12:39Dennes Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Oi,

    1) Pode colocar vários elementos no mesmo website, que irá se transformar em uma única dll.


    2) Existem algumas configurações que só podem ser feitas a nível de aplicação, elas precisarão determinar onde irá configurar novas aplicações. Autenticação é uma delas.


    []'s
    Dennes
    http://twitter.com/Dennes

    * Treinamento C# e Framework .NET c/OO dia  07/11 - Apenas 12 R$ 42,53  Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp

    * Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp

    Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
    http://www.bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
  • quinta-feira, 5 de novembro de 2009 13:31Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Me desculpa mas não consigui entender.

    Não consegui usar a master page depois de criar a dll. (criei a dll com um WUC e uma MasterPage)

    Se fosse possivel poderia detalhar como faço para usar os 2?
    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 13:40hbauer Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Tente colocar runat="server" no seu link....
    eu estava com um problema parecido na semana passada, da uma olhada ve se te ajuda:
    http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/dcea97cc-1dad-4f1b-a98b-22730b804783
  • quinta-feira, 5 de novembro de 2009 13:44Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    hbauer

    meu problema não esta sendo trabalhar os links da master page, mas usar apenas uma master page em varios niveis sendo esses niveis aplicações.
    O que a contece é que uma aplicação não acessa a master page de outra.
    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 15:39quintelab Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Quando você diz que uma aplicação não acessa a MasterPage da outra são projetos distintos?

    Abraços...
  • quinta-feira, 5 de novembro de 2009 16:24Dennes Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Oi, Daniel,

    1) Faça referência em seu site para a dll onde está a master page. Isso já deverá colocar a dll na pasta bin, mas em todo caso, confira.

    2) Adicione uma nova página. Os "wizards" de "selecione uma masterpage" não irão funcionar.

    3) Apague todo o conteúdo da página, deixando apenas a tag @page

    4) Adicione na tag @page o atributo masterpagetype="" nestas aspas coloque o nome completo da classe de sua masterpage, incluindo namespace. Na dúvida, configura no objectbrowser.

    5) Adicione objetos <asp:content> na sua página ligados ao contentplaceholder de sua master page

    6) Adicione algo nos objetos content só para testar

    7) Faça um view in browser

    8) tente entrar em modo de design e verifique se tudo funciona bem.

    []'s
    Dennes
    http://twitter.com/Dennes

    * Treinamento C# e Framework .NET c/OO dia  07/11 - Apenas 12 R$ 42,53  Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp

    * Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp

    Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
    http://www.bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
  • quinta-feira, 5 de novembro de 2009 16:58Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    me retorna o seguinte erro:

     Parser Error Message: Error parsing attribute 'masterpagetype': Type 'System.Web.UI.Page' does not have a public property named 'masterpagetype'.

    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 17:06Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Sim, uma 2 aplicações em diretorios virtuais diferentes..
    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 17:12Dennes Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Oi,

    Desculpe, é sono.

    O atributo a que me referia é masterpagefile, mas não serve para você, pois aponta para um arquivo.

    Vai ser um pouquinho mais complicado então. Faça o seguinte :

    1) Crie uma master page (arquivo .master)

    2) Delete tudo, menos a tag @master

    3) apague o arquivo de codebehind

    4) Mude a tag @master para que fique assim :

    <%

    @ Master Inherits="Namespace-e-nome-da-sua-classe-na-dll" %>



    5) Crie uma página baseada nesta nova master page

    6) Teste

    []'s
    Dennes
    http://twitter.com/Dennes

    * Treinamento C# e Framework .NET c/OO dia  07/11 - Apenas 12 R$ 42,53  Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp

    * Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp

    Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
    http://www.bufaloinfo.com.br



    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
  • quinta-feira, 5 de novembro de 2009 17:44Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Negocio ta feio rs..

    Não consegui.. eu faço isso porem não traz a master page.. simplesmente fica em branco.

    Minha estrutura no Object Browser esta assim:

    {} ASP
      |_masterpagebase_master
         |_Base Type (Pasta)
         |   |_UVV (class)
         |_Derived Type (Pasta)

    E na Master faço assim:

    <%

    @ Master Inherits="ASP.masterpagebase_master" %>


    Desenvolvedor Web
  • quinta-feira, 5 de novembro de 2009 18:46Dennes Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Oi,

    Fica em branco quando você entra em modo design ?

    Ou se você construir uma página baseada nesta nova master page, criar um <asp:content> ligado ao contentplaceholder da master page e fizer um view in browser tudo continua em branco ?

    []'s
    Dennes
    http://twitter.com/Dennes

    * Treinamento C# e Framework .NET c/OO dia  07/11 - Apenas 12 R$ 42,53  Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp

    * Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp

    Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
    http://www.bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
  • sexta-feira, 6 de novembro de 2009 11:58Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Fica em Branco tanto no VS qto 'in browser' .

    Pesquisando mais achei alguns artigos em ingles falando que existe uma maneira de 'enganar' o IIS , porem eu nao consegui interpretar muito bem essa frase. Achei meio confuso. Voce ja viu alguma coisa sobre?


    The first alternative is to copy shared master page files into a single location on an IIS web server. Each application can then create a virtual directory as a subdirectory and point the virtual directory to the real directory of master pages. The applications can then set the MasterPageFile property of a page to the name of the virtual directory, plus the name of the master page file. When we drop an updated master page file into the real directory, the new master page will appear in all the applications immediately.

    Como criar cada aplicação como subpastas e apontar pro diretorio real da master page? se fizer isso quando acessar via browser não vai achar as pastas corretas.
    Desenvolvedor Web
  • sexta-feira, 6 de novembro de 2009 12:45Harley AraujoMSFT, ModeradorMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Bom dia Daniel !

    O que foi sugerido neste trecho que você colocou é:

    - Crie um Diretorio ex: C:/MasterPages
    - Crie um diretorio Virtual: Site1
    - Crie um diretorio virtual em Site1 apontando para o C:/MasterPages

    Chame sua masterpage passando o caminho ex: Site1/MasterPages/Page.Master fazendo isso quando você atualizar os arquivos em C:/Master todas as aplicações serão afetadas.

    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Atenciosamente,
    Harley Araujo
    • Marcado como RespostaDaniel Dac sexta-feira, 6 de novembro de 2009 13:16
    •  
  • sexta-feira, 6 de novembro de 2009 13:04Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Sim.. isso que falei.

    Mas fazendo desta forma ainda tera um Diretorio Virtual dentro de outro, portando não consiguirei acessar a master page, pois me retorna o seguinte erro:

     The virtual path '/SiteNovo/Master/UVV.master' maps to another application, which is not allowed.

    Desenvolvedor Web
  • sexta-feira, 6 de novembro de 2009 13:16Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    OPA GALERA.. ENFIM CONSEGUI!!!

    Obrigado a todos Pela Paciencia.


    Desenvolvedor Web
  • sexta-feira, 6 de novembro de 2009 14:29Harley AraujoMSFT, ModeradorMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Boa Tarde Daniel.

    Poste a solução pra ajudar outros membros da comunidade que possam ter um problema parecido.

    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Atenciosamente,
    Harley Araujo
  • sexta-feira, 6 de novembro de 2009 16:40Daniel Dac Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    O esquema é a estrutura dos Diretórios Virtuais, como exemplo irei colocar a estrutura detalhada q estou usando:

    wwwroot
    |
    |_Portal (Aqui fica a raiz do meu Portal e é criado um Diretório Virtual)
       |_App_Data
       |_App_Code
       |_Pasta1
       |_Sistemas
          |_Aplicacao1 (Aqui tenho uma aplicação independente e tambem é um Diretório Virtual)
             |_App_Data
             |_App_Code
             |_Master (AQUI É ESTA A SOLUÇÃO: Crie esse diretório virtual, apenas no IIS e aponte para a raiz('Portal' neste caso), ou o diretorio que esta sua master page)
             |_Default.aspx ****
          
          |_Aplicacao2 (Aqui tenho uma aplicação independente e tambem é um Diretório Virtual)
       |
       |_Master.master (MasterPage que esta na raiz do portal)
       |_Arquivos.aspx


    **** = No arquivo criado dentro da aplicação é necessario modificar o caminho da master page para o caminho do diretorio virtual criado da seguinte forma seguindo o exemplo a cima:

    MasterPageFile="/Portal/Sistema/Aplicacao1 /Master/Master.master"

    Da um pouco de trabalho, mas facilita os Designer e concentra a MasterPage que ja é um grande ganho.

    Espero q tenham entendido.. tentei detalhar ao maximo pq pra entender isso nos artigos que encontrei foi uma luta hehe
    Desenvolvedor Web
    • Marcado como RespostaDaniel Dac sexta-feira, 6 de novembro de 2009 16:40
    •