<%%>创建内联代码块(表达式)

其实<%%>很早之前就见过了,只是会用一点功能,其它的不甚了解。今天偶尔见到了它的庐山真面目,现在共享给大家。

语法

    代码块呈现(<%%>)定义了当呈现页时执行的内联代码或内联表达式,它的具体语法如下:

         <%code%>//内联代码

         <%=expression%>//内联表达式

    使用内联代码可以定义独立的行或代码块。它是呈现页面的过程中执行的服务器代码。关于嵌入式代码块的使用说明,如下:ASP.NET网页中支持嵌入式代码块,主要用于保留与旧的ASP技术的向后兼容性。一般情况下,将嵌入式代码块用于复杂的编程逻辑并不是最佳做法,因为当页中的代码与标记混合时,很难进行调试和维护。此外,由于代码将在呈现页的过程中执行,因此与将代码至于适当的页处理阶段以执行后台代码或脚本块代码相比,灵活性大大降低。

    嵌入式代码块的部分用途包括:

         将控件元素或标记元素的值设置为函数返回的值。

         将计算直接嵌入到标记或控件属性中。

示例

    示例1:在页面上输出5行标记为“信息技术提高班”的字符串,运行效果如图:

代码如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestLocalData.WebForm1" %>  
  2.   
  3. <!DOCTYPE html>  
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head runat="server">  
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
  8.     <title>测试内联代码</title>  
  9. </head>  
  10. <body>  
  11.     <form id="form1" runat="server">  
  12.     <div>  
  13.         <!--打印5行字符串-->  
  14.         <%for (int i = 1; i <=5; i++) %>  
  15.         <%{ %>  
  16.         <%Response.Write("信息技术提高班"); %><br />  
  17.         <%} %>  
  18.     </div>  
  19.     </form>  
  20. </body>  
  21. </html>  
  22. </span>  

 

  示例2:内联表达式是调用Write方法的快捷方式。<%=expression%>用于解析表达式,并将其值返回到块中。以下示例代码通过使用内联表达式显示GetTime方法的值,运行效果如图所示:

 

代码如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="TestLocalData.WebForm2" %>  
  2.   
  3. <!DOCTYPE html>  
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head runat="server">  
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
  8.     <title>测试内联表达式</title>  
  9.     <script runat="server">  
  10.         protected String GetTime() {  
  11.             return DateTime.Now.ToString("t");  //获取当前时间hh:mm  
  12.         }  
  13.     </script>  
  14. </head>  
  15. <body>  
  16.     <form id="form1" runat="server">  
  17.     <div>  
  18.         当前时间是:<%=GetTime() %>  
  19.     </div>  
  20.     </form>  
  21. </body>  
  22. </html></span>  

 

  注意:代码块中的代码必须使用该页的默认语言进行编写。例如,如果该页的@Page指令包含属性language=”C#”,则该页将使用Visual C#编译器对标有runat=server的所有脚本块中的代码,以及<%%>代码块中的所有内嵌代码进行编译。

        

  示例3:应用<%%>代码块来实现ASP.NET中简单的属性绑定。

    首先了解什么是数据绑定。数据绑定不仅可以直接输出一般输出语句可以输出的数据类型,还可以输出任何一种符合数据绑定要求的数据源,而且对于不同的数据显示控件对数据源的处理可以不一致,也可以根据情况的改变而动态地发生变化。也就是说,在数据绑定中,数据的显示是由数据源和数据显示控件共同决定的。数据源决定数据的内容,数据显示控件决定数据的显示方式。实际上,数据绑定的作用机制就是由数据显示控件调用数据源的方法得到数据的。

    数据绑定的语法如下:

         <语言标记…属性’<% 数据绑定表达式 %>’runat=”server”>

    如果将表达式的结果直接输出到网页上,那么数据绑定的语法如下:

         字符串:<% 数据绑定表达式 %>

    示例运行结果如图:

 

下面介绍程序实现的主要步骤(正常情况下应该从数据库中获取,这里为了演示方便就绑定死的数据了):

(1)新建一个aspx页面,在前台页面代码中定义两个公共属性,这两个属性作为绑定数据时的数据源;之后应用<%%>代码块将它与显示控件之间建立绑定关系,完整示例代码如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="TestLocalData.WebForm3" %>  
  2.   
  3. <!DOCTYPE html>  
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head runat="server">  
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
  8.     <title>数据绑定表达式测试</title>  
  9.     <script runat="server">  
  10.         public String Name {  
  11.             get { return "lc"; }  
  12.         }  
  13.         public String Sex {  
  14.             get { return "male"; }  
  15.         }  
  16.     </script>  
  17. </head>  
  18. <body>  
  19.     <form id="form1" runat="server">  
  20.     <div>  
  21.         简单属性绑定<br />  
  22.         姓名:<%#Name %><br />  
  23.         性别:<%#Sex %>  
  24.     </div>  
  25.     </form>  
  26. </body>  
  27. </html>  
  28. </span>  

 

  说明:基于属性的数据绑定所涉及的属性必须包含get访问器,因为在数据绑定过程中,数据显示控件需要属性的get访问器中从属性中读取数据

(2)绑定完成之后,只需要在页面的Page_Load事件中调用Page类的DataBind方法,来实现在页面加载时读取数据,代码如下:

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.      Page.DataBind();  
  4. }  
  5. </span>  

    我们在见到一个陌生的知识或者名词之后不应该只是停留在会用的层次上,而应向“知其然知其所以然”靠拢,了解来龙去脉,哪怕掌握不了,最起码也要知道。对于经常使用的知识点扩展查完之后还需要进行消化、实践,这样才能拓展自己的眼界,并在面对该知识的变种之后能够从容的面对。

posted @ 2016-05-15 11:00  C#winform软件设计  阅读(1538)  评论(0编辑  收藏  举报