<asp:XXXX> vs <%#%>/<%@%>

Eri*_*tas 0 .net asp.net syntax

我开始学习ASP.NET并浏览www.asp.net上的教程视频.我理解Web应用程序框架的基本概念,如ASP/PHP/ASP.NET.HTML/XHTML是使用服务器知道读取和替换内容的特殊标记创建的.我在90年代的夏季实习期间做了一点ASP.

然而,到目前为止我看到的ASP.NET的几个例子似乎有两种类型的服务器解释标签.

大多数时候我看到的<asp:XXXX >标签如

<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
Run Code Online (Sandbox Code Playgroud)

但我也看到常规的ASP标签

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="TailspinSpyWorks.SiteMaster" %>
Run Code Online (Sandbox Code Playgroud)

这两种标签格式有什么区别?两者都被服务器解释正确吗?为什么我会使用一个而不是另一个?

Nic*_*ver 5

<%@ %>标签被称为指令,他们正在使用的编译器编译页面或用户控制.

<asp:....>标签只是ASP服务器控件(其他前缀可能是用户控件等),他们在页面本身的组件.

从你的标题<%# %>再次是一个不同的东西,它被称为数据绑定表达式,这是用于绑定任何内部的绑定语法,例如:<%# Eval("property %>.

还有<%= %>一个相当于Response.Write()直接在页面中输出内容的<%: %>版本,还有一个版本也可以在.Net 4.0中对清理后的输出进行html编码.

所有这些只是有不同的目的,所以你通常不会在它们之间进行选择(尽管有些情况肯定会重叠),它们只是在不同的情况下使用.