A página ASP.NET Web Form é um arquivo de texto declarativo com extensão .aspx. Além do conteúdo estático, você pode marcar elementos usando oito sintaxes diferentes. Esta seção revisa esses elementos de sintaxe e fornece alguns exemplos de como usá-los.
Sintaxe para renderização de código: <% %> e <%= %>
Os blocos de renderização de código são representados por elementos <% ... %>, que permitem controlar o conteúdo renderizado e são executados durante a fase de exibição da página Web Forms execução. O exemplo a seguir demonstra como usá-los para percorrer o conteúdo do HTML.
<%@ Idioma da página="VB" %>
<html>
<corpo>
<% Dim I como inteiro
Para I = 0 a 7%>
<tamanho da fonte="<%=I%>"> Olá, mundo </font> <br>
<%Próximo %>
</corpo>
</html>
<% ... %> é apenas executado, enquanto a expressão contendo o sinal de igual (<%= ... %>) calculará o resultado quando o conteúdo for exibido. Portanto, <%="Hello World" %> exibe o mesmo resultado que o código C# <% Response.Write("Hello World");
Observe que, como a linguagem exige o uso de marcadores para encerrar ou separar instruções (como o ponto e vírgula ; em C#), é importante colocar esses marcadores corretamente.
O código C#
<% Response.Write("Hello World"); requer um ponto e vírgula para encerrar a instrução.
<%="Olá Mundo"; %> Erro: Causa "Response.Write("Olá Mundo";);".
<%="Hello World" %> Não é necessário ponto e vírgula.
Sintaxe para declarar código: <script runat="server">
O bloco de declaração de código define as variáveis e métodos de membro que serão compilados na classe Page. Esses blocos podem ser usados para construir lógica de página e navegação. O exemplo a seguir demonstra como definir o método Subtract no bloco <script runat="server"> e depois chamá-lo na página.
<html>
<linguagem de script="VB" runat=servidor>
Subtração de função (Num1 como número inteiro, Num2 como número inteiro) como número inteiro
Retornar Num1-Num2
Função final
</script>
<corpo>
<%
Número escuro como inteiro = 100
Faça enquanto número> 0
Response.Write("Valor: " & Número & "<br>")
Número = Subtrair (Número, 1)
Laço
%>
</corpo>
</html>
Por favor note: Ao contrário do ASP - em ASP as funções devem ser definidas no bloco <% %> - todas as funções e variáveis globais devem ser definidas usando a tag <script runat=server>. A declaração da função no bloco <% %> exibirá uma mensagem de erro de compilação de sintaxe.
Sintaxe de controle de servidor
Os controles de servidor ASP.NET personalizados permitem que os desenvolvedores de páginas gerem dinamicamente interfaces de usuário HTML e respondam às solicitações dos clientes. Eles são expressos em arquivos usando uma sintaxe declarativa baseada em marcação. Essas tags diferem de outras tags porque contêm um atributo "runat=server". O exemplo a seguir demonstra como usar o controle de servidor <asp:label runat="server"> em uma página ASP.NET. Este controle corresponde à classe Label no namespace System.Web.UI.WebControls.
Adicionando uma tag com o ID "Message", uma instância de Label pode ser criada em tempo de execução:
<asp:label id="Message" font-size=24 runat="server"/>
Podemos usar este nome para acessar o controle . O código a seguir define a propriedade Text do controle.
Message.Text = "Bem-vindo ao ASP.NET"
<html>
<linguagem de script="VB" runat=servidor>
Sub Page_Load (remetente como objeto, E como EventArgs)
Message.Text = "Bem-vindo ao ASP.NET"
Finalizar sub
</roteiro>
<corpo>
<asp:label id="Mensagem" font-size=24 runat=servidor/>
</corpo>
</html>
Sintaxe de controle de servidor HTML
O controle de servidor HTML permite que os desenvolvedores operem elementos HTML na página de forma programática. A tag de controle do servidor HTML é diferente do elemento HTML do cliente porque possui o atributo "runat=server". O exemplo a seguir demonstra como usar o controle de servidor HTML <span runat=server> em uma página ASP.NET.
<html>
<linguagem de script="VB" runat=servidor>
Sub Page_Load (remetente como objeto, E como EventArgs)
Message.InnerHtml = "Bem-vindo ao ASP.NET"
Finalizar sub
</roteiro>
<corpo>
<span id="Message" style="font-size:24" runat=servidor/>
</corpo>
</html>
Sintaxe de vinculação de dados: <%# %>
O suporte integrado do ASP.NET para vinculação de dados permite que os desenvolvedores de páginas vinculem hierarquicamente propriedades de controle a valores de contêiner de dados. O código no bloco de código <%# %> só é executado quando o método DataBind de seu contêiner de controle pai é chamado. O exemplo a seguir demonstra como usar a sintaxe de ligação de dados no controle <asp:datalist runat=server>.
Nesta lista de dados, cada item recebe um modelo. O conteúdo do modelo de item é especificado usando uma expressão de vinculação de dados e Container.DataItem aponta para a fonte de dados usada pela lista de dados MyList.
<asp:datalist id="MinhaLista" runat=server>
<ItemTemplate>
Aqui está um valor: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
Neste caso, a fonte de dados do controle MyList é definida programaticamente e então o método DataBind() é chamado.
Chamar o método DataBind de um controle acionará uma árvore recursiva (começando com o controle para os controles inferiores na árvore); o evento DataBinding de cada controle de servidor na hierarquia será gerado e a expressão de ligação de dados nos valores do controle são calculados em conformidade. Portanto, se o método DataBind da página for chamado, todas as expressões de vinculação de dados na página serão chamadas.
<html>
<linguagem de script="VB" runat=servidor>
Sub Page_Load (remetente como objeto, E como EventArgs)
Dim itens como novo ArrayList
Itens.Add("Um")
Itens.Add("Dois")
Itens.Add("Três")
MinhaLista.DataSource = Itens
MinhaLista.DataBind()
Fim Sub
</script>
<corpo>
<asp:datalist id="MinhaLista" runat=server>
<ItemTemplate>
Aqui está um valor: <%# Container.DataItem %>
</ItemTemplate>
</asp:lista de dados>
</corpo>
</html>
O ASP.NET 2.0 também inclui uma nova sintaxe simplificada de vinculação de dados, que permite que os controles se vinculem automaticamente aos controles de fonte de dados sem precisar chamar DataBind() no código da página. Essa sintaxe é discutida no capítulo "Executando acesso a dados".
Sintaxe da tag de objeto: <object runat="server" />
A tag de objeto permite que os desenvolvedores de páginas usem sintaxe declarativa baseada em tags para declarar e criar instâncias de variáveis. O exemplo a seguir demonstra como usar a notação de objeto para criar uma instância da classe ArrayList.
Este objeto é criado automaticamente em tempo de execução e pode ser acessado através do ID “items”.
<html>
<linguagem de script="VB" runat=servidor>
Sub Page_Load (ByVal Sender como objeto, ByVal E como EventArgs)
ArrayItems.Add("Um")
ArrayItems.Add("Dois")
ArrayItems.Add("Três")
MinhaLista.DataSource = ArrayItems
MinhaLista.DataBind()
Finalizar sub
</script>
<corpo>
<object id="ArrayItems" class="System.Collections.ArrayList" runat=servidor/>
<asp:datalist id="MinhaLista" runat=server>
<ItemTemplate>
Aqui está um valor: <%# Container.DataItem %>
</ItemTemplate>
</asp:lista de dados>
</corpo>
</html>
Sintaxe de comentários do lado do servidor: <%-- Comentário --%>
Os comentários do lado do servidor permitem que os desenvolvedores de páginas evitem a execução e renderização do código do servidor (incluindo controles do servidor) e conteúdo estático. O exemplo a seguir demonstra como impedir que o conteúdo seja executado e enviado ao cliente. Observe que todas as informações entre <%-- e --%> serão filtradas e só ficarão visíveis no arquivo original do servidor, mesmo que contenha outras diretivas ASP.NET.
<html>
<corpo>
O conteúdo abaixo foi ocultado dos clientes do navegador usando um comentário do lado do servidor
(veja a fonte .aspx para ver o que queremos dizer :-)
<%--
<asp:calendar id="MyCal" runat=server/>
<% Para I = 0 a 44%>
Olá mundo <br>
<%Próximo %>
--%>
</corpo>
</html>
Sintaxe de inclusão de arquivos no lado do servidor: <-- #Include File="Locaton.inc" -->
A inclusão de arquivos no lado do servidor (#Include) permite que os desenvolvedores insiram o conteúdo de um arquivo específico em qualquer lugar do ASP. página NET. O exemplo a seguir demonstra como inserir títulos e rodapés personalizados em uma página.
<html>
<corpo>
<!-- #Include File="Header.inc" -->
<br />
<h3> Conteúdo da página principal </h3>
<br />
<!-- #Include File="Footer.inc" -->
</corpo>
</html>
Sintaxe de expressão: <%$ ... %>Novos recursos na versão 2.0
O ASP.NET 2.0 adiciona uma nova sintaxe de expressão declarativa para substituição de valor antes da análise da página. É muito útil quando precisamos substituir o valor da propriedade de controle do servidor pelo valor da cadeia de conexão ou configuração do aplicativo no arquivo Web.config. Também pode ser usado para substituir valores em arquivos de recursos durante a localização.
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString='<%$ connectionStrings:Pubs %>' runat="server" SelectCommand="sp_GetAuthors" />
<asp:Label ID="Label1" Text='<%$ Recursos: ExchRate, ConvertLabel %>' runat="server"/>