网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET的路由系统:URL与物理文件的分离

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05
于如上图所示的两个页面实际上对应着同一个.aspx文件,即作为Web应用默认页面的Default.aspx。要通过一个独立于物理路径的URL来访问该.aspx页面,我们就需要采用URL路由机制来实现两者之间的映射。为此我们在添加的Global.asax文件中编写了如下几行代码。如下面的代码片断所示,在Application_Start方法中我们通过System.Web.Routing.RouteTable的Routes属性得到了表示路由对象列表的System.Web.Routing.RouteCollection对象,并调用该列表对象的MapPageRoute方法将Default.aspx页面(~/Default.aspx)与一个URL模板(employees/{name}/{id)进行了映射。

  1. public class Global : System.Web.HttpApplication  
  2. {  
  3.     protected void Application_Start(object sender, EventArgs e)  
  4.    {  
  5.         var defaults = new RouteValueDictionary{{"name","*"},{"id","*"}};  
  6.        RouteTable.Routes.MapPageRoute("""employees/{name}/{id}""~/Default.aspx"true,defaults);  
  7.     }  

作为MapPageRoute方法最后一个参数的RouteValueDictionary对象用于指定定义在路由模板中相应变量({name}和{id})的默认值。对于指定了默认值的路由对象,在当前请求地址的后续部分缺失的情况下,它会采用提供的默认值对该地址进行填充之后再进行模式的匹配。在如上所示的代码片断中,我们将{name}和{id}两变量的默认值均指定为“*”。对于针对URI为http://localhost:2738/employees的请求,我们注册的路由对象会将其格式成http://localhost:2738/employees/*/*,后者无疑是和定义的URL模式变现出来的模式是匹配的。

在Default.aspx页面中,我们分别采用GridView和DetailsView来显示所有员工列表和某个列表的详细信息,下面的代码片断表示该页面主体部分的HTML。值得一提的是:GridView模板中显示为员工姓名的HyperLinkField的连接采用了上面我们定义在URL模板(employees/{name}/{id))中的模式。

  1. <form id="form1" runat="server">  
  2.     <div id="page">  
  3.            <asp:GridView ID="GridViewEmployees" runat="server" AutoGenerateColumns="false" Width="100%">  
  4.            <Columns>  
  5.                 <asp:HyperLinkField HeaderText="姓名" DataTextField="Name" DataNavigateUrlFields="Name,Id" DataNavigateUrlFormatString="~/employees/{0}/{1}" />  
  6.                 <asp:BoundField DataField="Gender" HeaderText="性别" />  
  7.                <asp:BoundField DataField="BirthDate" HeaderText="出生日期" DataFormatString="{0:dd/MM/yyyy}" />  
  8.                <asp:BoundField DataField="Department" HeaderText="部门" />  
  9.             </Columns>  
  10.         </asp:GridView>  
  11.         <asp:DetailsView ID="DetailsViewEmployee" runat="server" AutoGenerateRows="false"  Width="100%">  
  12.            <Fields>  
  13.                 <asp:BoundField DataField="ID" HeaderText= "ID"  />  
  14.                <asp:BoundField DataField="Name" HeaderText= "姓名"  />  
  15.                 <asp:BoundField DataField="Gender" HeaderText="性别" />  
  16.                 <asp:BoundField DataField="BirthDate" HeaderText="出生日期" DataFormatString="{0:dd/MM/yyyy}" />  
  17.                 <asp:BoundField DataField="Department" HeaderText="部门" />  
  18.             </Fields>  
  19.        </asp:DetailsView>  
  20.     </div>  
  21. </form> 

D

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号