Ir para conteúdo
Fórum Script Brasil
  • 0

Escrever No Body


kuroi

Pergunta

to aprendendo ainda... asp.net...

como faco para escrever no body? sempre que eu ponho response.write qualquer coisa, não importa o evento (page load, preload, loadcomplete) ele sempre escreve no comeco da pagina, quando eu olho no codigo fonte depois aparece ainda antes da tag html.

e melhor ainda, como faco pra escrever no head?

e como faco pra mexer em alguma propriedade do body (tipo bgcolor)?

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Coloque ambas as tags (head e body) para serem executadas no servidor (runat="server") e dê um id para cada (por exemplo, objHead e objBody). Daí, você vai poder fazer o seguinte:

objBody.InnerText = "outro teste"
objHead.InnerHtml = "<title>Título</title>"

Certo? ;) Estou supondo que é o VB2005, uma vez que você não especificou.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

é 2005 sim valeu.

funcionou, mas ele some com o textbox e o botao que eu pus na pagina no designer, porque?

objBody.InnerHtml = "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a><br>"
tentei assim:
objBody.InnerHtml = objBody.InnerHtml & "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a><br>"

mas diz que o innerhtml não é literal.

Link para o comentário
Compartilhar em outros sites

  • 0

é 2005 sim valeu.

funcionou, mas ele some com o textbox e o botao que eu pus na pagina no designer, porque?

objBody.InnerHtml = "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a><br>"
De fato, porque você redefine todo o código HTML dentro da tag body.
tentei assim:
objBody.InnerHtml = objBody.InnerHtml & "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a><br>"
mas diz que o innerhtml não é literal.
Sim, porque os controles não são literais, ou seja, não são formados por tags HTMLs (enquanto no servidor, é claro). Uma maneira mais prática de fazer o que você quer seria justamente criando um literal e adicionando ele em objBody:
Dim l As New Literal()
l.Text = "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a><br>"
objBody.Controls.Add(l)

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

e se eu quiser adicionar um TextBox no objBody? tentei assim:

Dim y As New TextBox
objBody.Controls.Add(y)[/code] mas volta a mensagem:
[code]Control 'ctl03' of type 'TextBox' must be placed inside a form tag with runat=server.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Control 'ctl03' of type 'TextBox' must be placed inside a form tag with runat=server.
consegui fazer assim:
Dim x As New Literal
        x.Text = "  <form name = 'imagens' method = 'post' action = 'gravaimagem.aspx'>" & _
            "<center>" & _
                "<table>" & _
                    "<td width = 190><b>Digite o Seu Nome:</b><td>" & _
                    "<input type = 'text' name = 'nome' size = 40 p style = 'color:#ffff33; background-color:#003366; font-weight:bold; font-family:verdana'><tr>" & _
                    "<td><b>Escolha sua Foto:</b><td>" & _
                    "<input type = 'file' name = 'path' size = 40 p style = 'color:#ffff33; background-color:#003366; font-weight:bold; font-family:verdana'><tr>" & _
                    "<td>" & _
                    "<td align = 'center'> <input type = 'submit' name = 'imagem' value = 'Gravar" & Chr(13) & "Imagem' p style = 'color:black;" & _
                            "background-color:white; font-size:12px; font-weight:bold; width:100; height:45; font-family:verdana;'>" & _
                "</table>" & _
            "</center>"
        objBody.Controls.Add(x)[/code]

mas consigo adicionar o controle textbox? e pra por dentro de um formulario? e pra alterar o estilo css dele?

Link para o comentário
Compartilhar em outros sites

  • 0

e se eu quiser adicionar um TextBox no objBody? tentei assim:

Dim y As New TextBox
objBody.Controls.Add(y)
mas volta a mensagem:
Control 'ctl03' of type 'TextBox' must be placed inside a form tag with runat=server. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: Control 'ctl03' of type 'TextBox' must be placed inside a form tag with runat=server.
consegui fazer assim:
Dim x As New Literal
        x.Text = "  <form name = 'imagens' method = 'post' action = 'gravaimagem.aspx'>" & _
            "<center>" & _
                "<table>" & _
                    "<td width = 190><b>Digite o Seu Nome:</b><td>" & _
                    "<input type = 'text' name = 'nome' size = 40 p style = 'color:#ffff33; background-color:#003366; font-weight:bold; font-family:verdana'><tr>" & _
                    "<td><b>Escolha sua Foto:</b><td>" & _
                    "<input type = 'file' name = 'path' size = 40 p style = 'color:#ffff33; background-color:#003366; font-weight:bold; font-family:verdana'><tr>" & _
                    "<td>" & _
                    "<td align = 'center'> <input type = 'submit' name = 'imagem' value = 'Gravar" & Chr(13) & "Imagem' p style = 'color:black;" & _
                            "background-color:white; font-size:12px; font-weight:bold; width:100; height:45; font-family:verdana;'>" & _
                "</table>" & _
            "</center>"
        objBody.Controls.Add(x)
mas consigo adicionar o controle textbox? e pra por dentro de um formulario?
É só colocar dentro do formulário que já vem na página (chamado form1):
Dim t As New TextBox()
form1.Controls.Add(t)
e pra alterar o estilo css dele?
Use a propriedade Style dele:
t.Style.Add("font-weight", "bold")
t.Style.Add("color", "yellow")
t.Style.Add("background-color", "blue")
Se bem que o código abaixo tem o mesmo efeito do código acima:
t.Font.Bold = True
t.ForeColor = Drawing.Color.Yellow
t.BackColor = Drawing.Color.Blue

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

valeu, meu codigo ficou assim:

Partial Class _Default
    Inherits System.Web.UI.Page
    Dim cnConec As New ADODB.Connection, rsPesquisa As New ADODB.Recordset, strSql As String
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim x As New Literal, txtNome As New TextBox, txtPath As New TextBox, cmdGravar As New Button
        Dim t As New Object

        cnConec.Provider = "Microsoft.Jet.OLEDB.4.0"
        cnConec.ConnectionString = Server.MapPath("Navi.mdb")
        cnConec.Open()

        strSql = "Select * from Ghost"
        rsPesquisa = cnConec.Execute(strSql)

        'Estilos(txtNome)
        'Estilos(txtPath)
        'Estilos(cmdGravar)
        cmdGravar.Text = "Gravar" & vbCrLf & "Imagem"

        x.Text = "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a><br>" & vbCrLf
        x.Text = x.Text & "<a href = 'index.htm'>" & rsPesquisa.Fields("Nome").Value & "</a>"
        objBody.Controls.Add(x)

        x.Text = "<center>" & vbCrLf & _
            "<table>" & vbCrLf & _
            "<td width = 190><b>Digite o Seu Nome:</b><td>" & vbCrLf
        objBody.Controls.Add(x)

        frmImagens.Controls.Add(txtNome)

        x.Text = "<tr><td><b>Escolha sua Foto:</b><td>" & vbCrLf
        objBody.Controls.Add(x)

        frmImagens.Controls.Add(txtPath)

        x.Text = "<tr><td>" & vbCrLf & "<td align = 'center'>"
        objBody.Controls.Add(x)

        frmImagens.Controls.Add(cmdGravar)

        x.Text = "</table>" & vbCrLf & "</center>"
        objBody.Controls.Add(x)

        For Each t In frmImagens.Controls
            'If t.GetType.Name = "TextBox" Or t.GetType.Name = "Button" Then Estilos(t)
            Estilos(t)
        Next
    End Sub
    Protected Sub Estilos(ByRef o As Object)
        If o.GetType.Name = "TextBox" Then
            o.Style.Add("size", "40")
            o.Style.Add("color", "#ffff33")
            o.Style.Add("background-color", "#003366")
            o.Style.Add("font-weight", "bold")
            o.Style.Add("font-family", "verdana")
        ElseIf o.GetType.Name = "Button" Then
            o.Style.Add("color", "black")
            o.Style.Add("background-color", "white")
            o.Style.Add("font-size", "12px")
            o.Style.Add("font-weight", "bold")
            o.Style.Add("width", "100")
            o.Style.Add("heigth", "45")
            o.Style.Add("font-family", "verdana")
        End If
    End Sub
End Class[/code]

sei la o que eu fiz que de uma hora pra otra, todo o texto html que eu insiro não aparece. tipo os objetos do formulario (ex: frmImagens.Controls.Add(cmdGravar)) aparecem certinho, mas td que eu adiciono com objBody.Controls.Add(x) não aparece mais, algum tem uma ideia do que pode ser??

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, acho que você não deveria utilizar o mesmo "x" em todas aquelas linhas. Quando o "x" é adicionado (objBody.Controls.Add(x)), na verdade é adicionada uma *referência* a ele e não uma cópia, portanto vai ser o mesmo "x" sendo adicionado várias vezes (o que pode dar erro) e também o texto trocado (na propriedade Text) vai ser sempre do mesmo "x".

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

vixe, não tenho mesmo nem nocao de como mexer com essa linguagem.

td que eu adiciono no body vai pra baixo do form. exemplo, o "<td width = 190><b>Digite o Seu Nome:</b><td>" & vbCrLf fica la embaixo e os textbox la em cima, o que fazer??

cara e foda aprende uma linguagem assim do nada sem te nocao de como os outros usam. tipo, esse esquema do objBody.Controls.Add(x), é assim mesmo que costumam fazer, pra cada linha que os caras querem por tem que criar uma variavel literal, isso não é nada pratico, como vocês costumam fazer??

Link para o comentário
Compartilhar em outros sites

  • 0
cara e foda aprende uma linguagem assim do nada sem te nocao de como os outros usam. tipo, esse esquema do objBody.Controls.Add(x), é assim mesmo que costumam fazer, pra cada linha que os caras querem por tem que criar uma variavel literal, isso não é nada pratico, como vocês costumam fazer??

Ah, eu estava esperando você fazer justamente essa pergunta. E, realmente, não é assim o modo usual. No ASP clássico, você tinha lá a página HTML e onde você queria colocar algo dinâmico você ia e colocava o código entre <% %>, certo? Ou seja, você *não* precisava escrever o HTML da página toda por um Response.Write(), mas sim só as partes que eram dinâmicas. O mesmo se dá com ASP.NET. Você tem um WebForm a sua disposição! Ele é igual a um WinForm, ou seja, basta pegar os componentes e colocar lá. Coloque os literais e as caixas de texto onde você quiser, utilizando o mouse para isso. Não é porque a página é dinâmica que você precisa criar tudo via código. No ASP clássico você podia fazer sua página no FrontPage ou no DreamWeaver, no melhor estilo WYSIWYG (What You See Is What You Got - O que você vê é o que você tem), e depois só acrescentar os códigos necessário para a dinamização da página. No ASP.NET não é diferente, e a vantagem é que você pode criar a página aí mesmo no Visual Studio, sem precisar utilizar outra ferramenta. Se um literal na página é um objeto, você pode mudar suas propriedades, portanto se você quer que algo apareça no centro da tela, coloque um literal lá e mude sua propriedade Text (via código, por exemplo). Essa é a forma usual, no ASP.NET.

Sacou? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

a está, aquilo que eu tava fazendo era meio ridículo mesmo, não?

tive um poco de dificuldade pra entender o esquema porque tipo no asp o codigo asp fica junto com o html e, quando a pagina carrega ele executa a parte asp, então eu não tava entendento como fazer o asp separado do html.

pra falar a verdade, quando fiz o primeiro post, nem sabia que dava pra vê o codigo html do winform.

mas agora entendi o esquema. tive um p*** trabalho pra fazer aquela funcao pra adiciona o estilo e ela é completamente inutil, que tristeza...

valeu, está dando pra aprender bastante.

Link para o comentário
Compartilhar em outros sites

  • 0
a está, aquilo que eu tava fazendo era meio ridículo mesmo, não?

Na verdade, não. Em algum momento você pode precisar inserir um objeto dinamicamente na página, e era exatamente isso que o código acima fazia. A diferença é que você não precisa inserir *todos* desta maneira.

mas agora entendi o esquema. tive um p*** trabalho pra fazer aquela funcao pra adiciona o estilo e ela é completamente inutil, que tristeza...

Lembre de Lavoisier: "nada se cria, nada se perde, tudo se transforma". Ou seja, pegue os estilos que você definiu na função e coloque-os em um arquivo CSS para ser utilizado em suas páginas. :)

tive um poco de dificuldade pra entender o esquema porque tipo no asp o codigo asp fica junto com o html e, quando a pagina carrega ele executa a parte asp, então eu não tava entendento como fazer o asp separado do html.

Se não me engano, ainda é possível programar desta maneira, mesmo em ASP.NET. Porém, acho que o estilo code-behind (que é este que eu e você estamos utilizando) é mais organizado, já que a apresentação (HTML) e a lógica do programa (os seus códigos) ficam separados.

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...