接着上次的那个翻译,希望能对大家的学习有一点帮助!

原文: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.

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
            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 页面上增加一个

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
           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中的配置为:

Code
<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"] 获得;

protected void Page_Load(object sender, EventArgs e)
       {
           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控制。

protected void Application_Start(object sender, EventArgs e)
        {
             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)(翻译)相关推荐

  1. 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 ...

  2. .NET Framework 4.0的新特性

    本文将揭示.NET 4.0中的3个新特性:图表控件.SEO支持以及ASP.NET 4可扩展的输出缓存. 图表控件 微软向开发者提供了大量可免费下载的图表控件,可以在.NET 3.5 ASP.NET或W ...

  3. .NET 4.0 Interop新特性ICustomQueryInterface (转载)

    .NET 4.0 Interop新特性ICustomQueryInterface 在.NET Framework v4.0发布的新功能中,在名字空间System.Runtime.InteropServ ...

  4. mysql 5.0 php_PHP 5.0的新特性

    PHP 5.0的新特性 最近,读者可以从PHP 4.x版本转移到PHP 5.0版本.正如读者期望的那样,在一个新的主要版本中,它做出了一些重要变更.在这个版本中,PHP后台的Zend引擎经过了完全的重 ...

  5. Tensorflow 2.0的新特性

    Tensorflow 2.0的新特性 几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年.无论是成熟的Keras,还是风 ...

  6. java 7.0 特性_JDK7.0语法新特性

    JDK7.0语法新特性 1,菱形语法(泛型实例化类型自动推断) List list = new ArrayList<>(); // <>这个真的很像菱形 2,在目前版本中,不可 ...

  7. 盘点Greenplum 6.0六大新特性及展望

    导读:本文介绍Greenplum 6.0的新特性. 作者:王春波 来源:大数据DT(ID:hzdashuju) Greenplum 6.0于2019年9月4日正式发布,内核版本从PostgreSQL ...

  8. C# 8.0 的新特性概览和讲解

    本文转自 https://blog.csdn.net/hez2010/article/details/84036742 C# 8.0 的新特性概览和讲解 前言 新的改变 可空引用类型(Nullable ...

  9. jdk5.0的新特性

    jdk的版本在1.4后变化很大,所以叫jdk5.0 下面是总结jdk5.0的新特性: (1)泛型(***)  泛型简介 泛型是J2SE 5.0最重要的特性.他们让你写一个type(类或接口)和创建一个 ...

最新文章

  1. 12c adg添加数据文件报错处理ORA-01111
  2. 老程序员的忠告:不要做浮躁的软件工程师
  3. 数据分析软件-weka
  4. CloudCC: 智能CRM究竟能否成为下一个行业风口?
  5. zoj 3547 The Boss on Mars
  6. spyder matlab,将pycharm配置为matlab或者spyder的用法说明
  7. 基线管理之Centos安全配置
  8. 图论--最长路--洛谷P1807 最长路_NOI导刊2010提高(07)
  9. php 自动创建目录
  10. 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
  11. 全国计算机二级ms office知识点,2017全国计算机二级MSOffice复习知识点
  12. oc中该使用lock还是gcd/syncronize
  13. 多数元素(哈希表和投票法)
  14. 对话面板,发送对话之后滚动至最新内容处
  15. Opencv 相机视图中的固定框中找到直线用lsd算法
  16. Solr(一) Solr 简介及搜索原理
  17. 1219v网卡驱动+linux,黑苹果Intel板载网卡驱动-IntelMausiEthernet.kext下载 V2.5.0d0-PC6苹果网...
  18. django_jquery_ajax二级联动菜单
  19. Unity3D Shader 新手教程(1/6)
  20. AWS免费套餐服务器部署NETCORE网站

热门文章

  1. Java - 探究前后分离带来的跨域问题
  2. Shell脚本攻略03-使用shell进行数学运算
  3. C++五子棋(七)——main函数以及项目总结
  4. HashMap、Hashtable、ConcurrentHashMap的原理与区别
  5. 深入分析Synchronized原理(阿里面试题)
  6. 时间序列:等分布序列(Equidistributed sequence)
  7. matlab调用python函数未定义函数类_从零学习Python—调用函数def用法(下)
  8. extjs获取焦点和失去焦点_[NBA夏联]焦点单三连红,NBA夏季联赛同样精彩
  9. java结构化语言,如何让Java代码流畅和结构化
  10. php files上传错误,php-PHP上传文件的问题$_FILES['file']['error']