2010-11-21 92 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