首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

9.1.2  静态和动态的客户端代码

在Visual Studio 2005中,可以进入ASCX页面的Source视图中,给用户控件添加静态的客户端代码,如图9-1所示。Visual Studio 2005的ASCX文件中的Source视图为客户端程序员提供了IntelliSense支持,包括在设计期间进行某些语法检查。这是静态代码的极限:每个浏览器请求带有用户控件的页面时,都会得到相同的代码(高效地执行第三个策略)。但是,Web Part和自定义控件都没有Source视图,所以不能对它们使用该策略。

图  9-1

较好的解决方案是移动到动态代码实现方式的最底层。在这一层上,可以确定请求页面的是哪一类客户机,并提供一组标准的客户端代码—— 但只给能执行它们的客户机提供。例如,如果页面由crawler(由搜索站点用于查找和索引Web页面的程序)请求,就可以忽略关联到用户操作上的客户端代码。这一层动态代码集成实现了第一个策略:把代码只提供给可以处理它们的客户机,这个策略可以用于自定义控件、用户控件和Web Part。

使用Browser对象可以确定我们所使用的客户机类型,Browser对象可以从ASP.NET的Request对象中获得。下面的示例确定客户机是crawler还是声名狼藉的AOL浏览器,并对这两种浏览器忽略添加的客户端代码(下一节将学习把客户端代码添加到页面上的工具)。

If Me.Page.Request.Browser.Crawler = False Or _

   Me.Page.Request.Browser.AOL = False Then

  ...dynamic client-side code...

End If

C#的对应代码如下所示。

if(this.Page.Request.Browser.Crawler == false ||

   this.Page.Request.Browser.AOL == false)

{

  ...dynamic client-side code...;

}

下面的Visual Basic 2005示例采用了一种更坚固的方式。在这个示例中,只有浏览器是Internet Explorer的最近版本,才生成代码。

If Me.Page.Request.Browser.Browser = "IE" And _

   Me.Page.Request.Browser.MajorVersion > 4 Then

  ...dynamic client-side code...

End If

C#的对应代码如下所示。

if(this.Page.Request.Browser.Browser == "IE" &&

   this.page.Request.Browser.MajorVersion > 4)

{

  ...dynamic client-side code...

}

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论