2010-11-21 50 views
22

我明白這些在aspx頁面的標記中意味着什麼...但我不知道它們可用於的全部功能,甚至不知道這些名稱用於表示這些特殊指令。<% %>在ASP.NET中(嵌入代碼塊)

實施例:

可以我把像IFS條件語句或開關

我已經看到,用它們從數據集綁定數據例如

任何輸入是極大的讚賞

+4

如果你做的Asp.net Web表單,我會使用太多避免。這是更好的表示和更容易調試將代碼放在代碼後面的代碼而不是HTML部分。 – Lareau 2010-11-21 22:08:43

+0

@ Lareau同意。我只是對它們的靈活性感興趣。 – 2010-11-21 22:14:27

回答

25

這些代碼塊標籤。

是的,你可以在這些標籤包裝服務器端代碼(在C#示例)

<% if (x = y) { 
    } else { 
    } 
%> 

OR

<% if (x = y) {%> 
    Write this HTML 
<% } else {%> 
    Write this html 
<% }%> 

還有

<%=SomeVar %>這將出來把SomeVar到HTML

+0

非常具有信息性,並感謝您的例子! – 2010-11-21 22:11:02

-1

是的,這些符號指示服務器解析頁面,這些標記中的代碼應該被解釋爲代碼而不是HTML。

因此,要回答您的其他問題,您可以使用條件和服務器支持的大多數其他編程功能。

退房的快速指南ASP: http://www.w3schools.com/asp/default.asp

8

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> 
+0

感謝您的回覆。這將有助於進一步研究不同形式的嵌入式代碼塊。 – 2010-11-21 22:11:43

0

當服務器接收到用於ASPX頁面的請求時,它生成一個內存中的類,從Page(或任何的基類指定)繼承。繼承的類將「正常」標記轉換爲靜態調用Response.Write(),將<%...%>轉換爲等效代碼,將<%= someExpression %>轉換爲Response.Write(someExpression)。對於前面的代碼塊,應接受任何有效的C#(或VB);對於後者,嵌入的代碼必須是單個表達式(您可以將其分配給變量)

39

Hereor here - in case it moves again)是我發現並隱藏了一段時間之前發佈的文章,其中列出了所有不同的內聯服務器端標籤例子。有七個:

  1. <%...%>運行正常代碼
  2. <%=...%>相當於回覆於()
  3. <%#...%>用於數據綁定表達式
  4. <%$...%>返回一個表達式的值,並且可以使用(注意:表達式不是代碼 - 請參閱here
  5. <%@...%>用於頁面指令,通常位於ASPX文件的頂部
  6. <%--...--%>是徵求意見
  7. <%:...%>相同<%=,除了它的HTML編碼值
+6

該鏈接似乎已死,但來自[此答案](http://stackoverflow.com/a/3812341/761771)的[MSDN文章](https://support.microsoft.com/en-us/kb/976112)很不錯。 – Nate 2015-12-15 21:16:05

+1

不幸的是,MSDN文章在介紹中列出了兩次'<%@ ... %>',但沒有任何有關'<%: ... %>'服務器標籤的信息,這正是我所尋找的內容... 這裏是另一個檢查的鏈接:https://weblogs.asp.net/ahmedmoosa/embedded-code-and-inline-server-tags – Adam 2017-02-09 19:23:32