首页»ASP.NET»使用Asp.Net4新特性路由创建WebForm应用

使用Asp.Net4新特性路由创建WebForm应用

来源:xray2005 发布时间:2013-04-14 阅读次数:
  ASP.NET 4 中的路由   1. 简介:   ASP.NET 4 增加了对使用 Web 窗体进行路由的内置支持。 路由是 ASP.NET 3.5 SP1 引入的一项功能,通过此功能可将应用程序配置为使用对用户和搜索引擎有意义的 URL,这样无需指定物理文件名。 使用这项功能,可以提高站点的用户友好度,并增加站点内容被搜索引擎发现的概率。   因此,我们可以使用在WebForm中使用路由,可以创建出类似mvc的那样简洁的url.比如:以前在asp.net的中,我们的url一般是http://www.xxx.com/artcile.aspx?id=1 这样的.现在如果使用asp.net的路由,那么我们的url可能就是这样: http://www.xxx.com/artcile/1 这样了,不需要想以前一样通过urlrewrite来实现了.下面介绍具体的步骤.   2. 准备环境:   下面的例子是在Window7(IIS7.5)+VS2010的环境实现的.当然也可以使用VS2008 SP1实现(但具体代码存在一些差异)   3. 添加路由规则:   首先使用asp.net创建一个空的web应用程序,然后添加全局文件Global.asax,引用命名空间System.Web.Routing,(如果没有的话,则向项目中添加对System.Web.Routing的引用)然后在Application_Start   事件中注册相应的路由.示例代码如下: using System.Web.Routing; protected void Application_Start(object sender, EventArgs e) { RegisteRoutes(RouteTable.Routes); } private void RegisteRoutes(RouteCollection routes) { routes.MapPageRoute("", "", "~/Default.aspx"); routes.MapPageRoute("list", "Items/{action}", "~/Items/list.aspx", false, new RouteValueDictionary { { "action", "all" } }); routes.MapPageRoute("show", "Show/{action}", "~/show.aspx", false, new RouteValueDictionary { { "action", "all" } }); routes.MapPageRoute("edit", "Edit/{id}", "~/edit.aspx", false, new RouteValueDictionary { { "id", "1" } }, new RouteValueDictionary { { "id", @"\d+" } }); }   其中需要说明的是asp.net 4中使用routes.MapPageRoute方法来添加相应的路由规则.它和.net 3.5 sp1中的routes.add是一样的.只不过更方便些.   routes.MapPageRoute:提供用于定义 Web 窗体应用程序的路由的方法。 有如下重载:   MapPageRoute(String, String, String)      MapPageRoute(String, String, String, Boolean)    MapPageRoute(String, String, String, Boolean, RouteValueDictionary)   MapPageRoute(String, String, String, Boolean, RouteValueDictionary, RouteValueDictionary)   MapPageRoute(String, String, String, Boolean, RouteValueDictionary, RouteValueDictionary, RouteValueDictionary)    具体每个方法的解析可以查看msdn   下面就是对应注册的路由规则,来创建普通的ASP.NET页面了,如Default.aspx,show.aspx.edit.aspx等等.然后,我们就可以在运行例子来看看效果先了.如下图所示:   4. 获取URL中的参数   Page.RouteData中包含我们需要的URL参数.因此,我们可以通过以下方法来获取URL中的参数,如下:   方法一:在后台.CS文件写如下代码: if (Page.RouteData.Values.ContainsKey("id")) this.lb.Text = Page.RouteData.Values["id"].ToString();   方法二:在页面中直接使用RouteValue,如下: <asp:Label ID="lb1" runat="server" Text="<%$RouteValue:id%>"></asp:Label>   5. 页面url连接的创建   在实际应用肯定是要页面跳转的,asp.net4提供了多种方法来创建符合路由规则的页面url。具体如下:   方法一:   直接按照规则,来创建url,如下: <asp:HyperLink ID="link1" runat="server" Text="Show All" NavigateUrl="~/show/all"> </asp:HyperLink> <br /> <asp:HyperLink ID="HyperLink1" runat="server" Text="Edit 1" NavigateUrl="~/Edit/1"> </asp:HyperLink>   方法二:   使用RouteUrl来创建url,如下: <asp:HyperLink ID="HyperLink2" runat="server" Text="RouteUrl Show All " NavigateUrl="<%$RouteUrl:routename=show%> "> </asp:HyperLink> <br /> <asp:HyperLink ID="HyperLink3" runat="server" Text="RouteUrl Edit 2" NavigateUrl="<%$RouteUrl:id=2,routename=edit %>"> </asp:HyperLink> <br />   这里,我们通过指定routename使得应用能够正确的引用规则,以便避免规则的混淆等等。   方法三:   通过.cs后台代码来现实,比如:页面有个超连接,如下: <asp:HyperLink ID="HyperLink4" runat="server" Text="Code behind Edit 2"> </asp:HyperLink>   那么,后台.cs代码可以来给HyperLink的url赋值: RouteValueDictionary p = new RouteValueDictionary { { "id", "3" } }; VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, "edit", p); this.HyperLink4.NavigateUrl = vpd.VirtualPath;   至此,我们示范了如何使用asp.net 4中的路由来创建相应的webform应用。
QQ群: WEB武松娱乐官方总群(83010142) 加群密码:关注下方微信公众号,发送消息 mm 获取
提示:更多精彩内容关注微信公众号:全栈武松娱乐中心(fsder-com)
mvc
网友评论(共0条评论) 正在载入评论......
理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
登录会员中心
武松娱乐官网