ASP.NET 4的Demo实践

从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服 务器上的物理文件之间的彻底解耦。借助于ASP.NET路由支持,开发人员可以定义一组路由规则,从而实 现把路由模式映射到一个生成相应内容的类。例如,你可以把URL“Categories/CategoryName”映射到一 个类,该类接收CategoryName而最终生成对应于此种类的产品信息显示于一个网格中的一组HTML标记。有 了这样的映射,用户便可以通过访问www.yoursite.com/Categories/Beverages来查看饮料种类对应的所 有产品信息。

在.NET 3.5 SP1中,ASP.NET路由主要是为ASP.NET MVC应用而设计的,虽然在非ASP.NET MVC框架支持 的Web窗体应用程序中也有可能实现ASP.NET路由支持。然而,在Web窗体应用程序中实现ASP.NET路由会涉 及大量额外的工作。

在Web窗体中,通常情况下,我们都要把路由模式映射到一个实际的ASP.NET页面。为此,我们需要创 建一个路由处理类以便在请求路由URL时调用之,并且在一定意义上实现了把请求调度到适当的ASP.NET页 面。例如,为了把一个路由映射到一个物理文件,比如把 Categories/CategoryName映射到 ShowProductsByCategory.aspx,我们需要如下三个步骤:

(1)在Global.asax文件中定义映射,用于把路由模式映射到一个路由处理类;

(2)创建路由处理类,它负责解析网址,把所有路由参数存储到一些目标页面可以访问到的位置(如 HttpContext.Items),并返回一个目标页面或处理请求路由的HTTP处理器的实例;

(3)在目标页面中编写代码来获取路由参数,并使用他们生成页面内容。

且不说花费了多大的代价仅仅读取前面的语句(更不用担编写之),你完全能够想象到—在Web窗体应用 程序中执行ASP.NET路由不一定是开发人员最直接的任务。

值得庆幸的是,ASP.NET 4.0通过添加一组类和助理方法极大地简化了ASP.NET路由在Web窗体应用程序 中的使用。使用ASP.NET 4.0,你会更容易地定义路由规则,而不再需要创建一个自定义路由处理类。本 文将详细探讨这方面的改进支持。

一、ASP.NET路由技术概述

ASP.NET路由能够干净地实现URL与网页文件名之间的解耦,从而可用于创建干净、简洁且搜索引擎友 好的网址。有关为什么应该在Web应用程序中使用ASP.NET路由的详细讨论,在此不作详细讨论,请参考其 他有关文章。

概括地说,ASP.NET路由允许开发人员定义路由规则,从而实现把一个路由模式(如 Categories/CategoryName)映射到一个处理请求的类。这些路由规则在应用程序启动时就已经定义在文件 Global.asax中的Application_Start事件处理程序中。

在Web窗体应用程序中,我们可能已经拥有了产生我们感兴趣内容的ASP.NET网页,我们只需要通过路 由规则把路由模式映射到这些ASP.NET页面 —通过把任何路由参数(例如CategoryName)映射到该ASP.NET 页面来实现。当在ASP.NET 3.5 SP1中使用ASP.NET路由时,没有方法直接把路由模式映射到ASP.NET页。 相反,我们必须创建一个路由处理类,它负责传递有关传入请求的信息,并且必须返回一个HTTP处理程序 来处理此请求。通常,在Web窗体应用程序中一个路由处理类执行以下步骤:

(1)根据需要解析网址,或许研究某些路由参数,并以这些值为基础作出决定。

(2)从需要被传递到ASP.NET页面或HTTP处理程序(它们将处理这一请求)的URL加载任何路由参数。总之 ,我们要确保ASP.NET页面会生成实际内容,因为此请求知道所有路由参数(如CategoryName)的值。一个 传达这样的信息的办法是,把它们放在 HttpContext.Items集合中—此集合担当存储特定长度的请求信息 的数据存储信息库的作用。

(3)返回执行上述处理的ASP.NET页面或HTTP处理程序的实例。

时间: 2024-09-05 11:07:16

ASP.NET 4的Demo实践的相关文章

ASP.NET 4的Demo实践:URL路由改进支持

从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规则,从而实现把路由模式映射到一个生成相应内容的类.例如,你可以把URLCategories/CategoryName映射到一个类,该类接收CategoryName而最终生成对应于此种类的产品信息显示于一个网格中的一组HTML标记.有了这样的映射,用户便可以通过访问www.yoursite.com/C

ASP.NET 4的Demo实践:URL“.NET研究”路由改进支持

从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规则,从而实现把路由模式映射到一个生成相应内容的类.例如,你可以把URLCategories/CategoryName映射到一个类,该类接收CategoryName而最终生成对应于此种类的产品信息显示于一个网格中的一组HTML标记.有了这样的映射,用户便可以通过访问www.yoursite.com/C

一起谈.NET技术,ASP.NET 4的Demo实践:URL路由改进支持

从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规则,从而实现把路由模式映射到一个生成相应内容的类.例如,你可以把URLCategories/CategoryName映射到一个类,该类接收CategoryName而最终生成对应于此种类的产品信息显示于一个网格中的一组HTML标记.有了这样的映射,用户便可以通过访问www.yoursite.com/C

面向对象的ASP技术:思考与实践

对象 目录:概述历史先进的技术与好用的技术:ASP到了尽头吗?组件化的Web程序一个实例小技巧结束语 概述本文简要描述了Web开发的历史,并主要对JSP, ASP, 以及ASP.NET进行了比较.最后,较为详细的提出了一种概念模型并做出了简单的实现.这种模型将使得ASP这种简单易用的技术上升一个高度,成为中小企业或者中小项目开发的较好选择.本文适合ASP的中高级开发者. 历史如今的Web应用程序越来越流行,基于B/S结构的软件也日渐增多.这也不难想象,正如Sun公司总裁Scott所说,"计算机就

ASP.NET 缓存分析和实践浅析提高运行效率_实用技巧

向数据层.业务逻辑层.UI 或输出层添加缓存支持.内存现在非常便宜 - 因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高. 缓存可以掩盖许多过失 缓存是一种无需大量时间和分析就可以获得"足够良好的"性能的方法. 这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存 30 秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以接受 30 秒的旧数据).缓存正是那些利用 20% 付出获得 80% 回报的特

一起谈.NET技术,ASP.NET缓存分析和实践浅析

说到ASP.NET缓存,那就是:尽早缓存:经常接触缓存的您应该在应用程序的每一层都实现缓存.向数据层.业务逻辑层.UI或输出层添加缓存支持.内存现在非常便宜-因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高.缓存可以掩盖许多过失缓存是一种无需大量时间和分析就可以获得"足够良好的"性能的方法. 这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存30秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以

ASP.NET缓存分析和实践浅析

说到ASP.NET缓存,那就是:尽早缓存:经常接触缓存的您应该在应用程序的每一层都实现缓存.向数据层.业务逻辑层.UI或输出层添加缓存支持.内存现在非常便宜-因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高.缓存可以掩盖许多过失缓存是一种无需大量时间和分析就可以获得"足够良好的"性能的方法. 这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存30秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以

ASP.NET 跨平台最佳实践

前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java更优秀(并非C#天生丽质,而是它站在了巨人的肩膀上). 本文并非为.NET正名而来,而仅仅是分享作者近几年在ASP.NET跨平台方面的研究与实践经验,算是对八年的.NET之路作一个阶段性的总结. .NET技术自诞生以来,便一直因其跨平台能力差而广受诟病.这里面有微软有意为之,也有别有用心之人在混淆视

ASP.NET MVC5网站开发概述(一)_实用技巧

前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了.正好看到别人在用MVC5写东西,喜新厌旧的我马上下载了Visual Studio 2013,幸好MVC4到MVC5变化不大,这次准备用MVC5重新写个Demo. 每次看以前写的代码总有把它丢进回收站的冲动,其实没有完美的代码,能解决问题的代码就算是好代码吧,但是我还是决定重新写一个学习的Demo,希望这次能有提高,希望这次能写完吧! 一.开发环境 1.开发环境: Vi