Tags "especiais" do ASP.NET


232

Qual é o nome oficial para as tags ASP.NET "especiais" como esta:

<%# %>
<%= %>
<%@ %>
<%$ %>

Não consigo descobrir o nome conceitual ou bem conhecido para esses nomes, por isso estou tendo problemas para procurar mais informações. Como bônus, alguém pode me dar um rápido resumo de todas as possíveis "tags especiais" e o que cada uma delas faz (ou me indica um recurso)?


1
A Microsoft também os chama de Embedded Code Blocks se eles contiverem código.
Robert Harvey

Respostas:


350

O nome oficial é " delimitadores de script do lado do servidor " ou " expressões embutidas do ASP.NET ". A caixa de diálogo de configurações de destaque da sintaxe do Visual Studio 2008 chama esses "scripts HTML do lado do servidor". Os funcionários da Microsoft os chamam de "nuggets de código" em seus blogs.

  • <%@ %>é uma diretiva para páginas da Web do ASP.NET . Usado para páginas e controles para definir as configurações do compilador de página / controle ( <%@ Control Inherits="MyParentControl" %>).
    • <%@ %>também é uma diretiva de aplicação . Usado para especificar configurações específicas do aplicativo para global.asax. Distinto das diretivas da página, pois usa apenas um conjunto de tags diferente.
  • <% %>é um bloco de renderização de código (para código embutido) . Uma das quatro formas de blocos de código incorporado . Usado para inclusão de código do lado do servidor no Render()método ( <% x = x + 1; %>) da classe gerada. Formato: único / multilinha ou vinculado a múltiplos (por exemplo, if/then/elseintercalado com html), mas não pode ser usado para declarar funções.
  • <%= %>é um bloco de renderização de código (para expressões embutidas) . Usado como uma abreviação para<%Response.Write(value)%>
  • <%: %>(não oficialmente um " Bloco de código de codificação de HTML ") é o mesmo que o anterior, mas a saída é codificada em HTML.
  • <%# %>é uma expressão de ligação de dados . Usado para uma via (somente leitura) ou de duas vias (actualizável) de ligação por meio de Eval, Xpath, Bind, ou expressões (por exemplo, o valor seleccionado de um controlo pendente). Vincula expressões a propriedades de controle ligadas a dados por meio da marcação de atributo do controle ou como uma marca separada que gera uma DataBoundLiteralControlinstância com o valor em sua Textpropriedade. Expressões são avaliadas por um DataBindingmanipulador de eventos para o controle.
  • <%#: %>é uma expressão de ligação de dados codificada em HTML (nova no ASP.NET 4.5). Combina a funcionalidade de <%# %>e <%: %>.
  • <%$ %>é um construtor de expressões do ASP.NET . Usado para ligação de expressão de tempo de execução para propriedades de controle por meio dos atributos de tag do servidor. Usado com AppSettings, ConnectionStringsou Resources(ou sua própria extensão personalizada , por exemplo, para uso code-behind propriedades). Essas atribuições são adicionadas ao OnInit()método da classe gerada.
  • <%-- --%>é um comentário do lado do servidor . Usado para excluir o conteúdo da compilação (e, portanto, gerará erros se um controle comentado for mencionado no code-behind). Ao contrário dos comentários html, o conteúdo não será incluído na saída.
  • <!-- #Include ... -->é uma diretiva de inclusão do servidor . Usado para inserir o conteúdo de um arquivo na página, controle ou arquivo global. Útil onde um controle de usuário é um exagero e uma página mestra não pode ser usada.

Há também um bloco de declaração de código , o formulário final do bloco de código incorporado.

<script runat="server">
bool IsTrue() {
  return false;
}
</script>

Isso é usado para incluir membros adicionais (métodos etc.) na classe gerada a partir da marcação do ASP.NET. Eles apenas foram fornecidos "principalmente para preservar a compatibilidade com versões anteriores da tecnologia ASP" e não são recomendados para uso.


1
Acredito que há um <% $ ...%> que vincula dados a aplicativos / configurações / cadeias de conexão.
Sisve

Eu não ouvi falar disso. Você tem uma fonte?
Sedat Kapanoglu 16/03/09

3
Eles são chamados de expressões ASP.NET. Veja msdn.microsoft.com/en-us/library/d5bd1tad.aspx
elo80ka

7

Não há resposta para a sua pergunta de nome, mas a página "Sintaxe da página ASP.NET" do MSDN é muito boa (ou melhor, essa é a página de nível superior; as páginas abaixo fornecem mais informações).

Edição: Eu já tinha pensado que <%# ... %>não estava incluído na lista, mas é claro que é, em expressões de ligação de dados. Doh.


Este link atualmente não funciona. Você precisa selecionar uma versão do .NET framework antes disso.
13333 Sam

1
@ Sam: Ah, obrigado - acho que foi retirado quando o .NET 4.5 saiu, por algum motivo. Eu editei o link.
Jon Skeet

1
Eu pensei que Jon Skeet não estava desenvolvendo web ...!
CodeArtist

6

Sempre achei esta página de Início Rápido muito útil, sempre que tenho dúvidas sobre a sintaxe do lado do servidor. Ele detalha 8 estilos de marcação diferentes e fornece exemplos ilustrativos de cada um, além de explicar os prós e os contras.

Porém, não menciona a diretiva no nível da página, que o IIRC está detalhado em outra parte do Início Rápido.

Obviamente, isso é relevante para o ASP.NET 2.0.


Esta é uma resposta apenas para link. Favor incluir informações relevantes.
ZzzzBov

1
O link está obsoleto :-(
Roland


6

Os funcionários da Microsoft os chamam de "pepitas" ou "pepitas de código" às vezes.


0

Eu também ouvi essas chamadas "picadas em V", inclusive no Podcast StackOverflow.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.