cintiadel 0 Denunciar post Postado Fevereiro 22, 2011 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
Ivan.Teles 23 Denunciar post Postado Fevereiro 22, 2011 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
cintiadel 0 Denunciar post Postado Fevereiro 23, 2011 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
Ivan.Teles 23 Denunciar post Postado Fevereiro 23, 2011 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