ASP.NET 4.0 的新特性(2 在WebForm中使用Routing)(翻译)
接着上次的那个翻译,希望能对大家的学习有一点帮助!
原文:http://geekswithblogs.net/ranganh/archive/2009/08/20/whatrsquos-new-in-asp.net-4.0-ndash-part-ii-ndash-routing.aspx
在原文中有SourceCode下载
在asp.net 4.0 中 有新的System.Web.Routing,他提供所有的重要的类RouteTable,PageRouteHanlder类,在最初System.Web.Routing是整合在asp.net MVC 中的,可是asp.net 团队
eb需要发现这个组件很有用,就将他推广到WebForm中,所以我们只需要引用相应的DLL就能在WebFrom上使用啦。
他有什么用啦,他能帮助你创建友好的URL,协助搜索引擎优化。清楚URLs中不友好的编码,而使得搜索引擎能能高性能的检测URL.
现在就来做一个Sample.使用是VisualStudio和Northwind数据库。
首先创建一个asp.net web Application,再创建如下文件Products.aspx, Categories.aspx,Global.asax 当然还加上default.aspx
在default.aspx上配置一个GridView.
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
DataKeyNames="CategoryID" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
<ItemTemplate>
<a href="Categories/<%# Eval("CategoryName") %>"><asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryName") %>'></asp:Label></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Description" HeaderText="Description"
SortExpression="Description" />
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
</asp:GridView>
在上面的item Template上你能看到新修改的连接的情况,也就是说在URL上显示的Categories/Beverages,是“Categories” 页面上的CategoryName。
接着再在 Categories 页面上增加一个
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
<ItemTemplate>
<a href="Products/<%# Eval("ProductName") %>"><asp:Label ID="Label1" runat="server" Text='<%# Bind("ProductName") %>'></asp:Label></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit"
SortExpression="QuantityPerUnit" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
SortExpression="UnitPrice" />
<asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock"
SortExpression="UnitsInStock" />
<asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder"
SortExpression="UnitsOnOrder" />
<asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel"
SortExpression="ReorderLevel" />
<asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
SortExpression="Discontinued" />
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>
然后配置好DataSource,可以看下面的图:
注意,我已算中Where条件下CategoryName下的Column=”Route“的Source。如图一,而且还描述RouteKey为”catname“和DefaultValue为"Beverages"。之后,我只是点击"Add"并点"OK"
(注意我们并没有写Ado。net代码,主要是为演示在DataSource上的Route新特性),这里Route类型是DataSource新增加的特性。
在DataSouce中的配置为:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductName], [QuantityPerUnit], [UnitPrice], [UnitsInStock], [UnitsOnOrder], [ReorderLevel], [Discontinued] FROM [Alphabetical list of products] WHERE ([CategoryName] LIKE '%' + @CategoryName + '%')">
<SelectParameters>
<asp:RouteParameter DefaultValue="Beverages" Name="CategoryName"
RouteKey="catname" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
还要在Categories.aspx页面上填加一个Lable来显示过滤器并且值是通过Page.RouteData.Values["catname"] 获得;
{
if (Page.RouteData.Values["catname"] != null)
{
lblDisplay.Text += "<b>" + Page.RouteData.Values["catname"].ToString() + "</b>";
}
else
{
lblDisplay.Visible = false;
}
}
在配置Route前,我还要添加DetailView在Products.aspx页面上,在产品显示完成后。我们就在页面上 Global.asax文件中的Application_Start事件中添加Route控制。
{
RouteTable.Routes.Add("ProductRoute", new Route("Categories/Products/{productname}",
new PageRouteHandler("~/Products.aspx")));
RouteTable.Routes.Add("CategoryRoute", new Route("Categories/{catname}",
new PageRouteHandler("~/Categories.aspx")));
}
所以在,在Default.aspx页面上,你连接到/Categories/<CategoryName> ,这时是关于跳转在Categories.aspx 页面上。而到Products页面是连接
/Categories/Products/<ProductName>
所以你最后注意的就是URL的显示:
分别是http://localhost/Categories/Condiments 和 http://localhost/Categories/Products/Aniseed%20Syrup
www.cnblogs.com/worksguo
worksguo
ASP.NET 4.0 的新特性(2 在WebForm中使用Routing)(翻译)相关推荐
- ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要
ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要 ASP.NET MVC 3.0(二): MVC的概念及MVC 3.0开发环境 ASP.NET MVC 3.0(三): 初识MVC ...
- .NET Framework 4.0的新特性
本文将揭示.NET 4.0中的3个新特性:图表控件.SEO支持以及ASP.NET 4可扩展的输出缓存. 图表控件 微软向开发者提供了大量可免费下载的图表控件,可以在.NET 3.5 ASP.NET或W ...
- .NET 4.0 Interop新特性ICustomQueryInterface (转载)
.NET 4.0 Interop新特性ICustomQueryInterface 在.NET Framework v4.0发布的新功能中,在名字空间System.Runtime.InteropServ ...
- mysql 5.0 php_PHP 5.0的新特性
PHP 5.0的新特性 最近,读者可以从PHP 4.x版本转移到PHP 5.0版本.正如读者期望的那样,在一个新的主要版本中,它做出了一些重要变更.在这个版本中,PHP后台的Zend引擎经过了完全的重 ...
- Tensorflow 2.0的新特性
Tensorflow 2.0的新特性 几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年.无论是成熟的Keras,还是风 ...
- java 7.0 特性_JDK7.0语法新特性
JDK7.0语法新特性 1,菱形语法(泛型实例化类型自动推断) List list = new ArrayList<>(); // <>这个真的很像菱形 2,在目前版本中,不可 ...
- 盘点Greenplum 6.0六大新特性及展望
导读:本文介绍Greenplum 6.0的新特性. 作者:王春波 来源:大数据DT(ID:hzdashuju) Greenplum 6.0于2019年9月4日正式发布,内核版本从PostgreSQL ...
- C# 8.0 的新特性概览和讲解
本文转自 https://blog.csdn.net/hez2010/article/details/84036742 C# 8.0 的新特性概览和讲解 前言 新的改变 可空引用类型(Nullable ...
- jdk5.0的新特性
jdk的版本在1.4后变化很大,所以叫jdk5.0 下面是总结jdk5.0的新特性: (1)泛型(***) 泛型简介 泛型是J2SE 5.0最重要的特性.他们让你写一个type(类或接口)和创建一个 ...
最新文章
- 12c adg添加数据文件报错处理ORA-01111
- 老程序员的忠告:不要做浮躁的软件工程师
- 数据分析软件-weka
- CloudCC: 智能CRM究竟能否成为下一个行业风口?
- zoj 3547 The Boss on Mars
- spyder matlab,将pycharm配置为matlab或者spyder的用法说明
- 基线管理之Centos安全配置
- 图论--最长路--洛谷P1807 最长路_NOI导刊2010提高(07)
- php 自动创建目录
- 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
- 全国计算机二级ms office知识点,2017全国计算机二级MSOffice复习知识点
- oc中该使用lock还是gcd/syncronize
- 多数元素(哈希表和投票法)
- 对话面板,发送对话之后滚动至最新内容处
- Opencv 相机视图中的固定框中找到直线用lsd算法
- Solr(一) Solr 简介及搜索原理
- 1219v网卡驱动+linux,黑苹果Intel板载网卡驱动-IntelMausiEthernet.kext下载 V2.5.0d0-PC6苹果网...
- django_jquery_ajax二级联动菜单
- Unity3D Shader 新手教程(1/6)
- AWS免费套餐服务器部署NETCORE网站
热门文章
- Java - 探究前后分离带来的跨域问题
- Shell脚本攻略03-使用shell进行数学运算
- C++五子棋(七)——main函数以及项目总结
- HashMap、Hashtable、ConcurrentHashMap的原理与区别
- 深入分析Synchronized原理(阿里面试题)
- 时间序列:等分布序列(Equidistributed sequence)
- matlab调用python函数未定义函数类_从零学习Python—调用函数def用法(下)
- extjs获取焦点和失去焦点_[NBA夏联]焦点单三连红,NBA夏季联赛同样精彩
- java结构化语言,如何让Java代码流畅和结构化
- php files上传错误,php-PHP上传文件的问题$_FILES['file']['error']