2010-08-31 135 views
0

我開始學習ASP.NET並通過www.asp.net上的教程視頻。我瞭解Web應用程序框架的基本概念,如ASP/PHP/ASP.NET。 HTML/XHTML是使用服務器知道要讀取和替換內容的特殊標籤創建的。在90年代的夏季實習期間,我做了一點點ASP。<asp:XXXX > vs <%# %>/<%@ %>

然而,隨着我見過ASP.NET的幾個例子,到目前爲止,似乎ASP.NET有兩種類型的服務器解釋的標籤。

大多數時候我看到<asp:XXXX >標記,如

<asp:ContentPlaceHolder ID="HeadContent" runat="server"> 
</asp:ContentPlaceHolder> 

而且我還看到像

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="TailspinSpyWorks.SiteMaster" %> 

是什麼這兩個標籤格式之間的差異經常ASP標籤?兩者都由服務器解釋正確?爲什麼我會用另一種呢?

回答

5

<%@ %>標籤are called directives,它們被編譯器用來編譯頁面或用戶控件。

<asp:....>標記只是ASP服務器控件(其他前綴可能是用戶控件等),他們在頁面本身的組件。

從您的標題<%# %>又有所不同,它被稱爲data binding expression,這是用於綁定任何內部的綁定語法,例如:<%# Eval("property %>

還有<%= %>這是equivalent to Response.Write()直接在頁面輸出內容,並有一個<%: %>版本,也做HTML編碼在.NET 4.0中消毒輸出。

所有這些只是有不同的目的,所以你不是通常選擇它們(雖然有些情況下肯定重疊),它們只是在不同的情況下使用。

+0

好吧,這是有道理的。那麼,以<%和ASP服務器控件開始的標籤之間的根本區別是什麼?從語法上看,它們看起來像是兩個獨立的標籤「家族」,如果這是有道理的話。 – 2010-09-02 10:58:20

+0

@Eric - 「<%'用於服務器語法,可以直接綁定或內聯打印,' 2010-09-02 11:43:08

+0

好吧,這是有道理的。我想我有什麼讓人困惑的是,當我經常使用ASP時,我只記得使用<%標籤。 – 2010-09-03 19:38:47

相關問題