Quando devo usar # e = nos controles do ASP.NET?

Eu tenho usado o ASP.NET há anos, mas nunca me lembro quando usando o # e = são apropriados.

Por exemplo:

 

ou

  

Alguém pode explicar quando cada um deve ser usado para que eu possa mantê-lo em linha reta na minha mente? # É usado apenas em controles que suportam binding de dados?

<% =%> é o equivalente a fazer Response.Write (“”) onde quer que você o coloque.

<% #%> é para vinculação de dados e só pode ser usado onde a vinculação de dados é suportada (você pode usá-los no nível de página fora de um controle se você chamar Page.DataBind () no codebehind)

Visão geral de expressões de vinculação de dados

Há um par de diferentes ‘picadas de abelhas’:

  • <%@ - diretiva de página
  • <%$ - access a resources
  • <%= - saída explícita para a página
  • <%# - binding de dados
  • <%-- - bloco de comentário do lado do servidor

Também novo no ASP.Net 4:

  • <%: - escreve para a página, mas com código HTML

Aqui está um ótimo post de Dan Crevier que percorre um aplicativo de teste que ele escreveu para mostrar as diferenças.

Em essência:

  • As expressões <% = são avaliadas no tempo de renderização
  • As expressões <% # são avaliadas no momento DataBind () e não são avaliadas se o DataBind () não for chamado.
  • <% # expressões podem ser usadas como propriedades em controles do lado do servidor. <% = expressões não podem.