服务器端脚本是一系列用于向Web服务器发出命令的指令。这些脚本通过分隔符与文本和HTML区分开来。分隔符是标记一个单元开始或结束的字符或字符序列。ASP.NET(以及ASP)使用分隔符<% %>
来包围脚本命令。在分隔符内,可以包含任何对使用的脚本语言有效的命令。
服务器端脚本的分隔符对于理解服务器端代码的执行至关重要。不同的分隔符用于不同的场景,例如文本模板指令、嵌入代码块、HTML编码输出、数据绑定表达式、表达式、服务器端注释以及Razor语法。本文将详细介绍这些分隔符的用法。
文本模板指令用于指定页面和用户控件编译器在处理ASP.NETWeb Forms页面(.aspx)和用户控件(.ascx)文件时使用的设置。例如:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
ASP.NET页面框架支持多种指令,如@Page、@Control、@Import、@Implements、@Register、@Assembly、@Master、@WebHandler、@PreviousPageType、@MasterType、@OutputCache、@Reference等。
嵌入代码块是在页面渲染阶段执行的服务器代码。代码块中的代码可以执行编程语句并调用当前页面类中的函数。例如:
<%
Response.Write("Hello World!!!");
%>
在嵌入代码块中,使用<%= expression %>
语法来解析表达式并将值返回到代码块中。嵌入代码块必须用页面的默认语言编写。嵌入代码块主要用于向后兼容旧的ASP技术。
这是自动HTML编码输出的一种方式,有助于保护应用程序和网站免受跨站脚本注入(XSS)和HTML注入攻击。ASP.NET应用程序(尤其是使用ASP.NET MVC的应用程序)通常依赖于使用<%= %>
代码块表达式来渲染输出。
<div class="someContent">
<%: Model.Content %>
</div>
这种语法是使用数据绑定的基础。所有数据绑定表达式必须包含在这些字符内。数据绑定表达式在页面上调用DataBind方法时,创建服务器控件属性和数据源之间的绑定。
<tagprefix:tagname property="<%# data-binding expression %>" runat="server" />
它们是一种声明性方式,用于基于运行时评估的信息设置控件属性。表达式的常见用途是在数据源控件中引用连接字符串、appsettings或资源。
<%$ expressionPrefix: expressionValue %>
这些允许开发者在ASP.NET应用程序文件的任何部分嵌入代码注释。服务器端注释元素的开闭标签之间的任何内容,无论是ASP.NET代码还是文本,都不会在服务器上处理或渲染到结果页面上。
<%--
Content of comments, or commented out server controls
--%>
@是MVC Razor中用于代码指令的字符。即使在页面中写入HTML,也不需要打开或关闭代码块。如果想在HTML中添加代码指令,需要在代码前使用@符号。
@ For a single code line/values
<p>
Current time is: @DateTime.Now
</p>
@{...} For code blocks with multiple lines
@{
var name = "John";
var nameMessage = "Hello, my name is " + name + " Smith";
}
@: For single plain text to be rendered in the page
@{
@:The day is: @DateTime.Now.DayOfWeek. It is a great day!
}
@*
A Razor Comment
*@
@{
//A C# comment
/* A Multi
line C# comment
*/
}