Usuário com melhor resposta
Gerar pagina aspx programaticamente, com Master page e code-behind

Pergunta
-
Boa tarde amigos do msdn, eu tenho a seguinte duvida, qual a melhor forma de gerar via código paginas .aspx (com diferentes conteudos e nomes de arquivos. ex: termosdeuso.aspx e mapadosite.aspx), porém que utilizem uma master-page e que tenha linhas de código, como por exemplo algum evento de PAGE_LOAD ou DATABOUND???
Atualmente utilizo o Visual Web Developer 2008 Express
Grato pela atenção,
Douglas Fernando
Respostas
-
Douglas,
O .NET Framework possui uma namespace própria para geração de código, chamada System.CodeDom. O problema que, pelo pouco que eu mexi com essa namespace, eu acho que ela não gera HTML (no seu caso o código da página ASPX)
Jorge- Marcado como Resposta Douglas Fernando quarta-feira, 17 de março de 2010 12:56
-
Douglas,
Creio que sim. O trabalhoso vai ser escrever esse código HTML.
Jorge- Marcado como Resposta Douglas Fernando quarta-feira, 17 de março de 2010 12:56
Todas as Respostas
-
-
Ola a todos e boa tarde André. Primeiramente obrigado pela atenção e desculpem por não ter explanado muito bem minha dúvida.
Resumindo, seria algo como um CMS. Onde o meu cliente possa entrar em um painel administrativo e adicionar páginas ao seu website. E que nessas novas paginas ele possa escolher a master page, incluir o conteudo desejado (textos, fotos, etc) e também possa incluir blocos de código, como por exemplo: digamos que nessa nova pagina ele queira incluir um response.write("teste") no evento page_load. É isso.
Então eu gostaria de saber o melhor procedimento para realizar essa tarefa, quais classes usar (se houver algo especifico) ou algum link que me possa ajudar.
Obrigado
Douglas Fernando -
Douglas,
O .NET Framework possui uma namespace própria para geração de código, chamada System.CodeDom. O problema que, pelo pouco que eu mexi com essa namespace, eu acho que ela não gera HTML (no seu caso o código da página ASPX)
Jorge- Marcado como Resposta Douglas Fernando quarta-feira, 17 de março de 2010 12:56
-
Ok... Muito obrigado Jorge. Bom parte do problema resolvido. Já estou vasculhando as documentações desse namespace para entender melhor.
Será que se eu gerar uma string com meu codigo html e depois usar o File.WriteAllText para salvar como uma pagina aspx resolveria esse problema?
Atte.,
Douglas Fernando -
Douglas,
Creio que sim. O trabalhoso vai ser escrever esse código HTML.
Jorge- Marcado como Resposta Douglas Fernando quarta-feira, 17 de março de 2010 12:56
-
-
Olá... qto a parte de gerar o arquivo .ASPX consegui achar uma solução, não sei se a melhor, porém funcional. Eu pego como referencia um arquivo .TXT
Aos que se interessarem, segue abaixo uma amostra do código.
Lembrando que este código é somente um teste, para minhas necessidades ainda terei que fazer diversas implementações
Espero que ajude...
ARQUIVO TXT
<%@ Page Language="vb" AutoEventWireup="false" MasterPageFile="$mpf" Theme="$skin" %><asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
$conteudo_cabecalho
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ph_corpo_semMenu" runat="server">
$conteudo_corpo_semMenu
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ph_gadgets" runat="server">
$gadgets
</asp:Content>
CÓDIGOPrivate Sub WebForm1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim templateString As String Dim templateFile As String = configuracao.getOneValue("paginaPadrao") Dim templatePath As String = Server.MapPath(String.Concat(ConfigurationManager.AppSettings("templatesFolder"), templateFile)) Dim aspxPath As String = Server.MapPath(String.Concat(ConfigurationManager.AppSettings("templatesFolder"), "newfile.aspx")) ' If File.Exists(templatePath) Then Try Using sr As StreamReader = File.OpenText(templatePath) templateString = sr.ReadToEnd() End Using Catch ex As Exception Throw New Exception(String.Format("Falha ao ler o arquivo {0}.", templateFile), ex) End Try ' Try templateString = templateString.Replace("$mpf", String.Concat("~/App_MasterPages/", "default.Master")) templatestring = templateString.Replace("$skin", "default") Using sw As StreamWriter = New StreamWriter(File.Create(aspxPath)) sw.WriteLine(templateString) End Using Catch ex As Exception Throw New Exception(String.Format("Falha ao gravar o arquivo {0}.", aspxPath), ex) End Try Else Throw New Exception(String.Format("O caminho {0} é inválido.", templatePath)) End If end sub
Obrigado,
Douglas Fernando