首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC 路由擴展:路由映射與實例演示

     編輯:關於ASP.NET

ASP.NET 原生路由系統透過 MapPageRoute 將 URL 模板對應至實體檔案,但 ASP.NET MVC 的請求目標是 Controller 中的 Action 方法。為此,MVC 對 RouteCollection 擴展了 MapRoute 等方法,實現無實體檔案依賴的路由映射。

基本路由映射 API

RouteCollectionExtensions 定義了 IgnoreRoute 與 MapRoute 兩組擴展方法:

public static class RouteCollectionExtensions
{
    public static void IgnoreRoute(this RouteCollection routes, string url);
    public static void IgnoreRoute(this RouteCollection routes, string url, object constraints);

    public static Route MapRoute(this RouteCollection routes, string name, string url);
    public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults);
    public static Route MapRoute(this RouteCollection routes, string name, string url, string[] namespaces);
    public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints);
    public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults, string[] namespaces);
    public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints, string[] namespaces);
}

defaults 與 constraints 採用 object 類型,方便使用匿名型別;namespaces 參數協助解析 Controller 類型,最終存放於 Route.DataTokens["Namespaces"] 中。

實例演示:註冊路由與查看 RouteData

在一般 ASP.NET Web 應用中新增 Default.aspx,於頁面中輸出 RouteData 的 Route、RouteHandler、Values 及 DataTokens 等屬性,觀察 MVC 風格路由註冊後的解析結果。

<body>
<form id="form1" runat="server">
<div>
<table>
<tr><td>Route:</td><td><%=GetRouteData().Route != null? GetRouteData().Route.GetType().FullName:"" %></td></tr>
<tr><td>RouteHandler:</td><td><%=GetRouteData().RouteHandler != null? GetRouteData().RouteHandler.GetType().FullName:"" %></td></tr>
<tr><td>Values:</td><td><ul><%foreach (var variable in GetRouteData().Values){%><li><%=variable.Key%>=<%=variable.Value%></li><% }%></ul></td></tr>
<tr><td>DataTokens:</td><td><ul><%foreach (var variable in GetRouteData().DataTokens){%><li><%=variable.Key%>=<%=variable.Value%></li><% }%></ul></td></tr>
</table>
</div>
</form>
</body>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved