我明白这些在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