none
Gerar pagina aspx programaticamente, com Master page e code-behind RRS feed

  • 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
    quinta-feira, 11 de março de 2010 17:59

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
    terça-feira, 16 de março de 2010 20:45
  • 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
    quarta-feira, 17 de março de 2010 12:27

Todas as Respostas

  • Fala Douglas...

    Não sei quanto aos colegas... Mas eu não entendi a sua necessidade.
    Poderia elaborar melhor?


    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    quinta-feira, 11 de março de 2010 20:07
  • 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
    segunda-feira, 15 de março de 2010 15:58
  • 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
    terça-feira, 16 de março de 2010 20:45
  • 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
    quarta-feira, 17 de março de 2010 12:17
  • 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
    quarta-feira, 17 de março de 2010 12:27
  • Ok... muito obrigado pela ajuda.

    Abraço a todos
    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ÓDIGO

    Private 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
    quinta-feira, 18 de março de 2010 20:49