使用Asp.Net4新特性路由建立WebForm應用
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應用。
相關文章
- Laravel 5.5 路由新特性Laravel路由
- Flink ML的新特性解析與應用
- RIS,建立 React 應用的新選擇React
- 利用React 16.6新特性優化應用效能React優化
- oracle10G新特性之ASM的應用OracleASM
- ❤️🔥 Solon Cloud Event 新的事務特性與應用Cloud
- 利用Domino V8新特性開發Mashup應用
- 利用 Domino V8 新特性開發 Mashup 應用
- 9i新特性之Flashback Query的應用(1)
- 9i新特性之Flashback Query的應用(2)
- Oracle 12c新特性之:使用高階索引壓縮建立索引Oracle索引
- oracle10G新特性之段顧問的應用Oracle
- 使用Spring AI + Redis 建立RAG應用SpringAIRedis
- 【11gR2新特性】extent延遲建立
- 使用Oracle功能特性提高應用執行效率 (3)Oracle
- 使用Oracle功能特性提高應用執行效率 (2)Oracle
- 使用Oracle功能特性提高應用執行效率 (1)Oracle
- 如何使用 IDEA 建立 Java 入門應用IdeaJava
- 使用github.com/lxn/walk建立桌面應用Github
- 嘗試使用Knative建立一個應用
- 使用Rancher建立負載均衡的容器應用負載
- 使用 .NET MAUI 建立移動應用——Get StartUI
- 基於Elixir使用Phoenix建立CQRS/ES應用
- 使用AngularJS建立應用的5個框架AngularJS框架
- 使用 nuxi add 快速建立 Nuxt 應用元件UX元件
- 使用 defineNuxtRouteMiddleware 建立路由中介軟體UX路由
- 用 Docker 建立 serverless 應用DockerServer
- React 16 新特性使用總結React
- PHP開發者應該學習、會用10個PHP7新特性PHP
- PHP7 中我們應該學習會用的新特性PHP
- Oracle11新特性——DATA GUARD開啟模式下應用歸檔Oracle模式
- 應用9i新特性:在資料庫中使用不同塊大小的表空間資料庫
- SQL Server建立使用者函式與應用SQLServer函式
- 轉享:使用HTML5建立移動應用HTML
- Homestead 建立應用
- Oracle 11gr2 的新特性-延遲段建立Oracle
- 一文讀盡前端路由、後端路由、單頁面應用、多頁面應用前端路由後端
- oracle10G新特性之臨時表空間組的應用Oracle