ASP.NET 4的Web Forms全面支持URL Routing机制

ASP.NET 4的Web Forms当中,最令人激赏的,则莫过于是URL Routing机制的全面支持。过去在ASP.NET 3.5 SP1当中,Web Forms或多或少就开始支持URL Routing机制,它让我们在网址的呈现以及使用上更加的有弹性。

过去我们在ASP.NET当中,习惯于底下这样的网址呈现方式:http://myWebSite/EditProduct.aspx?Id=1

但最近几年REST风格的网站(或REST Web服务)兴起,你常常会看到网址的呈现方式变成:http://myWebSite/Product/Edit/XBOX

上面这样的网址有一些好处,首先,网址可以更明确的表达想要呈现的功能,或是要后端应用程序进行的行为;其次,上面这样的网址由于并非对应到后端某一个实体档案(.aspx.cs),而是透过Routing机制来转派,因此相较过去的网址有着更高的安全性。

也就是说,在这样的架构下,ASP.NET应用程序的网址再也不只是对应到实体档案的路径,而是可用来表达要执行的功能。至于实际执行时要处理的程序代码或呈现结果的网页,也并非一定要是由网址所指向的实体页面。这也让我们在开发应用程序时有更大的弹性,例如一般的部落格网站网址可能是『http://blog/studyhost』,由于blog网站多半都可以开放给多人申请,理所当然的每一个用户都有类似『http://blog/申请者ID』这样的网址。当然,对应到ASP.NET的后端应该都是同一套程序来处理,在过去的ASP.NET应用程序当中,我们得要煞费一番工夫才能让网站可以接受这样的网址设计(把参数从QueryString转变成REST风格),而现在,透过URL Routing机制很快地就能轻松搞定。

除此之外,还有另一个显而易见的好处,采用REST风格的网址:http://myWebSite/Product/Edit/XBOX vs. http://myWebSite/EditProduct.aspx?Id=1

相较于传统网址更容易被Google等搜索引擎查询与检索,毕竟上图网址中的XBOX比起产品Id=1来得容易理解的多。那我们要如何在ASP.NET 4当中使用这样的机制呢,您只需要透过新加入的Routes类别,利用MapPageRoute方法即可轻易的完成URL路由的指定,例如:


以下为引用的内容:

view plaincopy to clipboardprint?
protected void Application_Start(object sender, EventArgs e) {  
    RouteTable.Routes.MapPageRoute(  
        "TestRoute", "Search/{ProductName}", "~/WebForm1.aspx");   

protected void Application_Start(object sender, EventArgs e) {
    RouteTable.Routes.MapPageRoute(
        "TestRoute", "Search/{ProductName}", "~/WebForm1.aspx");
}

在Global.asax如此撰写之后,当使用者在网址列键入:http://localhost:1031/Search/AK47

网页(应用程序主控权)将被导引到WebForm1.aspx页面,而在该页面中则可以透过底下的方式来取得参数ProductName『AK47』:


以下为引用的内容:

view plaincopy to clipboardprint?
protected void Page_Load(object sender, EventArgs e) {  
    Response.Write("Searching Product Name : " +   
                Page.RouteData.Values["ProductName"]);  

protected void Page_Load(object sender, EventArgs e) {
    Response.Write("Searching Product Name : " +
                Page.RouteData.Values["ProductName"]);
}

这样的设计方式,果然是方便容易许多,别小看这样的机制,这让我们开发大型的Web应用程序变为可能,配合我们后面要介绍的ASP.NET 4当中的DynamicData技术,我们得以轻易的开发出单一的一张.aspx网页(一支程序),即可维护后端Schema不同的各种数据表的。不像过去ASP.NET 2.0时代,若后端数据库有许多数据表要处理,我们几乎得要为每一个数据表建立独立的一张.aspx维护页面,即便每一张.aspx网页上的行为与程序代码逻辑几乎完全一样(CRUD)。

更有趣的是,配合URL Routing机制的普及化,连过去我们熟悉的DataSource控件都增加了一个RouteParameter来共襄盛举,如今ASP.NET 4.0 Web Forms可说是对URL Routing机制全面支持了:


以下为引用的内容:

view plaincopy to clipboardprint?
<asp:LinqDataSource ID="LinqDataSource1" runat="server"   
    ContextTypeName
="UrlRouting.DataClasses1DataContext" EntityTypeName
=""  TableName="Customers" Where="CompanyName
== @CompanyName"> 
    <WhereParameters> 
     <asp:RouteParameter Name="CompanyName" RouteKey
="CompanyName" Type="String" /> 
    </WhereParameters> 
</asp:LinqDataSource> 
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
    ContextTypeName=
"UrlRouting.DataClasses1DataContext" EntityTypeName
="" TableName="Customers" Where="CompanyName
 == @CompanyName">
    <WhereParameters>
     <asp:RouteParameter Name="CompanyName" RouteKey
="CompanyName" Type="String" />
    </WhereParameters>
</asp:LinqDataSource>

您会发现,透过上面这样的语法,我们可以让LinqDataSource进行数据查询时where条件所使用的参数,直接引用URL Routing中的参数值,类似过去的QueryStringParameter,相当的方便好用。

时间: 2024-09-08 23:24:09

ASP.NET 4的Web Forms全面支持URL Routing机制的相关文章

一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

艾伟_转载:VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

[ASP.NET 教程] 二. Web Forms

asp.net|web|教程 1. 服务器端处理 虽然form.html能够通过post或者get方法产生回发,但是它仍然不能够处理用户输入,仍然是一个静态页面,现在我们需要在服务器端处理用户输入及回发.在服务器端处理用户输入有很多方式,因为本文是ASP.NET教程,故只谈ASP.NET.ASP.NET使用Web Form来描述Web页面,通过面向对象的编程方式,配合.NET Framework,使Web应用程序设计变得更简单,更高效,功能更为强大.2. Web Forms 先从一个简单的示例程

[ASP.NET 教程] 三. Web Forms编程模型

asp.net|web|编程|教程    1. Web Forms编程模型 Web Forms中的用户界面是由HTML和服务器控件共同描述的.每个控件标签都对应了一个服务器上的实际的对象. 控件触发的事件是在服务器端处理的.ASP.NET将客户端与服务器端的处理"融合"到一起,看起来就好像事件是在同一端被触发和处理的,而事实上是客户端事件导致浏览器产生回发,于是服务器端对象触发事件. <script></script>块中的服务器端代码并不能称为脚本,它是被编译

ASP.NET4实用方法Url Routing的使用

ASP.NET 4的Web Forms当中,最令人激赏的,则莫过于是URL Routing机制的全面支持.过去在ASP.NET 3.5 SP1当中,Web Forms或多或少就开始支持URL Routing机制,它让我们在网址的呈现以及使用上更加的有弹性.       过去我们在ASP.NET当中,习惯于底下这样的网址呈现方式:http://myWebSite/EditProduct.aspx?Id=1       但最近几年REST风格的网站(或REST Web服务)兴起,你常常会看到网址的呈

ASP.NET Web Forms 4.0中双向Routing支持

.NET Framework 3.5 SP1已经包含了ASP.NET Routing引擎.现在微软已经在ASP.NET WebForms 4.0中 增加了对Routing引擎更好的支持,它使用表达式构造器进行双向Routing. Channel 9刚发布了一个10-4的新视频,展示如何在ASP.NET 4.0中使用这个新功能. 下面是视频中展示的一段代码.他们使用了一个经典示例,展示如何将Product.aspx? category=Jerseys映射至Product/Jerseys.在使用AS

ASP.NET Web Forms中用System.Web.Optimization取代SquishIt

将一个ASP.NET Web Forms项目从.NET Framework 4.0升级至.NET Framework 4.5之后,发现SquishIt竟然引发了HTTP Error 500.0 - Internal Server Error. SquishIt是一个开源的支持ASP.NET的js/css打包工具,项目地址:https://github.com/jetheredge/SquishIt,出生早于Microsoft ASP.NET Web Optimization Framework(

asp+中文教程(二)-- Asp+ Web Forms

asp+|web|教程|中文 二.ASP + Web Forms ASP + Web Forms ,一个微软的新名词,照它自己的话说,ASP + Web Forms页面框架是一个可升级的NGWS runtime编程模型,可以在服务器上动态产生网页.不太好懂是吗,其实说白了,和HTML的表单一样,但它可以在服务器端动态改变,而不象静态HTML表单那样一旦生成就无法改变,当然,用DHTML或remote script也可以做到动态改变,但毕竟不是很方便.那么,究竟Web Forms是个什么样呢?其实