Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cintiadel

MasterPage Dinâmica

Recommended Posts

Eu gostaria que de acordo com a opção selecionada no combo na pagina Default.aspx, fosse carregada uma masterpage diferente na pagina Default2.aspx.

Esta dando erro: "Referência de objeto não definida para uma instância de um objeto. " na linha

pagina.MasterPageFile="MasterBlue.master"

da classe BaseMaster.

Segue o codigo das paginas, conto com a ajuda de voces.

 

Default.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<head runat="server">
   <title></title>
</head>
<body>
   <form id="form1" runat="server">
   <div>
       <asp:DropDownList ID="DropDownList1" runat="server">
       <asp:ListItem Value="TE">Teste</asp:ListItem>
       <asp:ListItem Value="DV">Teste2</asp:ListItem>
   </asp:DropDownList>
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="OK" />
   </div>
   </form>
</body>
</html>

 

Default.aspx.vb

Partial Class _Default
   Inherits System.Web.UI.Page
   Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
       Response.Redirect(String.Format("Default2.aspx?parceiro={0}", Server.UrlEncode(DropDownList1.SelectedValue)))
   End Sub
End Class

 

Classe BaseMaster.vb

Imports Microsoft.VisualBasic
Public Class BaseMaster
   Inherits MasterPage
   Public Sub SelecionaMaster(ByRef pagina As MasterPage, ByVal parceiro As String)
       If parceiro = "DV" Then
           pagina.MasterPageFile = "MasterBlue.master"
       Else
           pagina.MasterPageFile = "MasterGreen.master"
       End If
   End Sub
End Class

 

Default2.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<head runat="server">
   <title></title>
</head>
<body>
   <form id="form1" runat="server">
   <div>
     pagina 2</div>
   </form>
</body>
</html>

 

Default2.aspx.vb

Partial Class Default2
   Inherits System.Web.UI.Page
   Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
       Dim x As New BaseMaster()
       x.SelecionaMaster(Me.Master, Request("Parceiro"))
   End Sub
End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para altera a MasterPage Dinamicamente você tem que criar um metodo para sobrescrever (em C#) o metodo Page_PreInit exemplo?

 

private void Page_PreInit(object sender, EventArgs e)
{
this.MasterPageFile = "NomeDaMaster.master"
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para altera a MasterPage Dinamicamente você tem que criar um metodo para sobrescrever (em C#) o metodo Page_PreInit exemplo?

 

private void Page_PreInit(object sender, EventArgs e)
{
this.MasterPageFile = "NomeDaMaster.master"
}

 

 

Só que eu tenho que fazer através da função da classe pois tenho varias paginas onde terei que alterar isso, dessa forma eu teria que atribuir uma masterpage para cada página, não ficaria dinâmico.

As páginas não terão masterpage nenhuma, ao selecionar o combo de acordo com a opçao é que deve ser carregada ou uma ou outra masterpage.

Grata

 

Default2.aspx.vb

Partial Class Default2 
   Inherits System.Web.UI.Page 
   Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit 
       Dim x As New BaseMaster() 
       x.SelecionaMaster(Me.Master, Request("Parceiro")) 
   End Sub 
End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai não vai dar certo, pois se tentar adicionar master page a uma pagina sem master ira duplicar os cabeçalhos html, head, title, etc.

O ideal é todas as paginas herdarem uma master generica, dai você altera dinamicamente. ou ao inves de usar páginas, use as paginas como webusercontrol e va carregandos eles dinamicamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.