Esta documentação foi arquivada e não está sendo atualizada.

Blocos de código no ASP.NET

O modelo de arquivo único página ASP.NET é semelhante a estrutura de página Active Server Pages (ASP) em que blocos de script que contêm código vêm antes do HTML, e marcas especiais podem ser usadas no HTML. Este tópico descreve os problemas envolvidos na atualização de seu código ASP para ASP.NET.

O modelo de página code-behind do ASP.NET separa o código script-block das marcas de HTML e ASP.NET. Para obter mais informações, consulte Visão geral da sintaxe de página da Web ASP.NET. Para obter informações sobre a sintaxe de ligação de dados que permite que você vincule os valores de propriedade de um controle a dados, consulte Visão geral de expressões de ligação de dados.

Todos os procedimentos do ASP.NET e variáveis global devem ser declaradas dentro de <script runat="server"> blocos colocados antes da abertura <html>marca, não entre ASP < %... estilo %> delimitadores. Você ainda pode declarar variáveis em < %... Processar %> blocos, mas eles estarão acessíveis apenas para outros blocos de renderização da página, não globalmente para outras funções ou procedimentos. Uma página pode conter mais de um bloco script, mas o linguagem de programação deve ser a mesma em todos os blocos em uma página.

O seguinte exemplo de código é uma página ASP.NET que declara as variáveis e procedimentos em um script e bloco de processamento. Se você passar um cadeia de caracteres da consulta para o página ASP.NET em uma URL, a cadeia de caracteres da consulta será exibida na página.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    // The following variables are visible to all procedures 
    // within the <script> block.
    String str;
    int i;
    int i2;

    int DoubleIt(int inpt)
    {
        // The following variable is visible only within 
        // the DoubleIt procedure.
        int factor = 2;

        return inpt * factor;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <% 
      // The following local variable is visible only within this
      // and other render blocks on the page.
      object myVar;

      myVar = Request.QueryString;
      Response.Write("The querystring is " + 
         Server.HtmlEncode(myVar.ToString()));
    %>
    </div>
    </form>
</body>
</html>


Processar funções não são suportadas no ASP.NET. Usando versões antigas do ASP, você pode inserir HTML literal no corpo de um procedimento, sistema autônomo neste exemplo de código a seguir.

   <% Sub SomeProcedure() %>
   <H3> Render this line of bold text. </H3>
   <% End Sub %>

Esse código geraria um erro em um página ASP.NET. Para o ASP.NET, você teria que escrever o código da seguinte maneira.

   <script runat=server>
      Sub SomeProcedure()
         Response.Write("<H3> Render this line in bold text.</H3>")
      End Sub
   </script>

Todo o código que está incluído nas marcas <script>…</script>, exceto declarações de variáveis globais, deve ser encapsulado em procedimentos.

Com o ASP, o código foi incluído dentro de < %... %> Rótulos e o processamento da página começaram com a primeira demonstrativo após a primeira marca < % >. Com o ASP.NET, qualquer código que é para ser processado assim que a página for carregada deve ser incluído no evento intrínseco Page_Load. Você ainda pode escrever código < %... %> blocos, mas ele será executado na renderização de time (na parte superior - para baixo de forma, sistema autônomo em ASP) depois que a página é carregada. Se você precisar executar o código de inicialização, ele deve aparecer no evento Page_Load, que é gerado imediatamente após a página é carregada pelo mecanismo ASP.NET, como mostrado na exemplo de código a seguir.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("<br />Page has been posted back.");
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    Hello.<br />
    <asp:Button ID="Button1" runat="server" 
    Text="Click to Post Back" />
    </div>
    </form>
</body>
</html>


Um evento intrínseco Page_Unload relacionado é sempre o último evento a ser gerado durante o ciclo de vida da execução da página e pode ser usado para executar qualquer código de limpeza da página.

Para obter mais informações, consulte Visão Geral do Ciclo de Vida da Página ASP.NET e Modelo de Eventos de Controle do Servidor Web ASP.NET.

Mostrar: