我明白這些在aspx頁面的標記中意味着什麼...但我不知道它們可用於的全部功能,甚至不知道這些名稱用於表示這些特殊指令。<% %>在ASP.NET中(嵌入代碼塊)
實施例:
可以我把像IFS條件語句或開關
我已經看到,用它們從數據集綁定數據例如
任何輸入是極大的讚賞
我明白這些在aspx頁面的標記中意味着什麼...但我不知道它們可用於的全部功能,甚至不知道這些名稱用於表示這些特殊指令。<% %>在ASP.NET中(嵌入代碼塊)
實施例:
可以我把像IFS條件語句或開關
我已經看到,用它們從數據集綁定數據例如
任何輸入是極大的讚賞
這些代碼塊標籤。
是的,你可以在這些標籤包裝服務器端代碼(在C#示例)
<% if (x = y) {
} else {
}
%>
OR
<% if (x = y) {%>
Write this HTML
<% } else {%>
Write this html
<% }%>
還有
這<%=SomeVar %>
這將出來把SomeVar到HTML
非常具有信息性,並感謝您的例子! – 2010-11-21 22:11:02
是的,這些符號指示服務器解析頁面,這些標記中的代碼應該被解釋爲代碼而不是HTML。
因此,要回答您的其他問題,您可以使用條件和服務器支持的大多數其他編程功能。
退房的快速指南ASP: http://www.w3schools.com/asp/default.asp
MSDN文檔稱它們爲embedded code blocks。您可以將任何代碼放在代碼隱藏文件中,服務器將在將頁面提供給瀏覽器之前執行它們。
Directive是一種特定類型的代碼塊的名稱,它是ASP.NET頁面頂部最常見的代碼塊,它爲編譯器提供有關ASP.NET頁面的信息。他們由<%@
和%>
分隔。
代碼塊的語言與指令塊中指定的語言相同。一個簡單的例子:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html>
<body>
<p><% string hello = "Hello world!"; Response.Write(hello); %></p>
<ol>
<% for (int i = 1; i <= 5; ++i) { %>
<li><% Response.Write("Item #" + i); %></li>
<% } %>
</ol>
</body>
</html>
感謝您的回覆。這將有助於進一步研究不同形式的嵌入式代碼塊。 – 2010-11-21 22:11:43
當服務器接收到用於ASPX頁面的請求時,它生成一個內存中的類,從Page
(或任何的基類指定)繼承。繼承的類將「正常」標記轉換爲靜態調用Response.Write()
,將<%...%>
轉換爲等效代碼,將<%= someExpression %>
轉換爲Response.Write(someExpression)
。對於前面的代碼塊,應接受任何有效的C#(或VB);對於後者,嵌入的代碼必須是單個表達式(您可以將其分配給變量)
Here(or here - in case it moves again)是我發現並隱藏了一段時間之前發佈的文章,其中列出了所有不同的內聯服務器端標籤例子。有七個:
<%...%>
運行正常代碼<%=...%>
相當於回覆於()<%#...%>
用於數據綁定表達式<%$...%>
返回一個表達式的值,並且可以使用(注意:表達式不是代碼 - 請參閱here)<%@...%>
用於頁面指令,通常位於ASPX文件的頂部<%--...--%>
是徵求意見<%:...%>
相同<%=
,除了它的HTML編碼值該鏈接似乎已死,但來自[此答案](http://stackoverflow.com/a/3812341/761771)的[MSDN文章](https://support.microsoft.com/en-us/kb/976112)很不錯。 – Nate 2015-12-15 21:16:05
不幸的是,MSDN文章在介紹中列出了兩次'<%@ ... %>',但沒有任何有關'<%: ... %>'服務器標籤的信息,這正是我所尋找的內容... 這裏是另一個檢查的鏈接:https://weblogs.asp.net/ahmedmoosa/embedded-code-and-inline-server-tags – Adam 2017-02-09 19:23:32
如果你做的Asp.net Web表單,我會使用太多避免。這是更好的表示和更容易調試將代碼放在代碼後面的代碼而不是HTML部分。 – Lareau 2010-11-21 22:08:43
@ Lareau同意。我只是對它們的靈活性感興趣。 – 2010-11-21 22:14:27