ASP.NET 中的代码块

ASP.NET 单文件页模型与 Active Server Pages (ASP) 页结构类似,因为包含代码的脚本块出现在 HTML 之前,并且可以在 HTML 中使用特殊标记。 本主题说明将 ASP 代码更新为 ASP.NET 会涉及到的问题。

ASP.NET 代码隐藏页模型将脚本块代码与 HTML 和 ASP.NET 标记分开。 有关更多信息,请参见 ASP.NET 网页语法概述 有关可使您将控件属性值绑定到数据的数据绑定语法的信息,请参见数据绑定表达式概述

所有 ASP.NET 过程和全局变量都应在 <html> 开始标记之前的 <script runat="server"> 块中声明,而不能在 ASP <%...%> 样式分隔符之间的块中声明。您仍可以在 <%...%> 呈现块中声明变量,但只有该页上的其他呈现块可以访问它们,其他函数或过程不能全局访问它们。一页可以包含多个 script 块,但一页上的所有块中的编程语言必须相同。

下面的代码示例是在脚本和呈现块中声明变量和过程的 ASP.NET 页的代码。如果通过 URL 将查询字符串传递给 ASP.NET 页,则查询字符串会显示在该页上。

 
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    // The following variables are visible to all procedures 
    // within the <script> block.
    String str;
    int i;
    int i2;

    int DoubleIt(int inpt)
    {
        // The following variable is visible only within 
        // the DoubleIt procedure.
        int factor = 2;

        return inpt * factor;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <% 
      // The following local variable is visible only within this
      // and other render blocks on the page.
      object myVar;

      myVar = Request.QueryString;
      Response.Write("The querystring is " + 
         Server.HtmlEncode(myVar.ToString()));
    %>
    </div>
    </form>
</body>
</html>


ASP.NET 不支持呈现函数。使用早期版本的 ASP,可以在过程体中插入文本 HTML,如下面的代码示例所示。

 
 
   <% Sub SomeProcedure() %>
   <H3> Render this line of bold text. </H3>
   <% End Sub %>

这些代码会在 ASP.NET 页中生成错误。对于 ASP.NET,您必须编写如下代码。

 
 
   <script runat=server>
      Sub SomeProcedure()
         Response.Write("<H3> Render this line in bold text.</H3>")
      End Sub
   </script>

除全局变量声明外,包含在 <script>…</script> 标记中的所有代码都必须封装在过程内部。

对于 ASP,代码放在 <%...%> 标记内,页处理从第一个 <%> 标记后面的第一个语句开始。对于 ASP.NET,所有要在加载页后立即处理的代码都必须包含在 Page_Load 内部事件中。您仍可以在 <%...%> 块中编写代码,但它将在相应的页加载后在呈现时以自上而下的方式(像在 ASP 中一样)执行。如果需要执行初始化代码,则它应出现在 Page_Load 事件中,该事件在 ASP.NET 引擎加载该页后立即引发,如下面的代码示例所示。

 
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("<br />Page has been posted back.");
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    Hello.<br />
    <asp:Button ID="Button1" runat="server" 
    Text="Click to Post Back" />
    </div>
    </form>
</body>
</html>


相关的 Page_Unload 内部事件始终是页执行生命周期中引发的最后一个事件,并可以用于执行任何页清理代码。

posted on 2013-03-09 22:28  AI_JJ  阅读(551)  评论(0)    收藏  举报

导航