日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

一步步学会使用ASP.NET 4 WEB应用程序中使用URL Routing(翻译)

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步学会使用ASP.NET 4 WEB应用程序中使用URL Routing(翻译) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建路由


路由就是將URL路徑映射到具體的物理文件。若要將路由添加到網站中,請使用 RouteCollection.MapPageRoute 方法將它們添加到RouteTable類的靜態Routes屬性。

將用于添加路由的方法添加到 Global.asax 文件中
  1. 如果網站還沒有 Global.asax 文件,請通過執行下列步驟添加一個這樣的文件:

    1. 右擊“解決方案資源管理器”中的 Web 項目,然后選擇“添加新項”。

    2. 選擇“全局應用程序類”,再單擊“添加”。

  2. 打開 Global.asax 文件。

  3. 在Application指令的后面,添加用于System.Web.Routing命名空間的Import指令,如下面的示例所示:

    <%@ Import Namespace="System.Web.Routing" %>
  4. 在 Session_End方法的后面添加以下代碼:

    void?RegisterRoutes(RouteCollection?routes)
    {
    }

    在下面的過程中,您將向此方法中添加用于創建路由的代碼。

  5. 在 Application_Start 方法中,調用RegisterRoutes添加路由規則,如下面的示例所示:


void?Application_Start(object?sender,?EventArgs?e)
{
????RegisterRoutes(RouteTable.Routes);
}

上面的過程添加了用于注冊路由的空方法。現在,將使用此方法將路由添加到網站中。

添加路由
  1. 在 RegisterRoutes 方法中,添加以下代碼:

    routes.MapPageRoute("",
    ????"SalesReportSummary/{year}",
    ????"~/sales.aspx");

    此代碼添加了一個未命名的路由,該路由具有URL匹配模式,該模式包含文本值“SalesReportSummary”和名為year的占位符(URL參數)。它將路由映射到名為 Sales.aspx 的文件。

  2. 在 RegisterRoutes 方法中,添加以下代碼:

    routes.MapPageRoute("SalesRoute",
    ????"SalesReport/{locale}/{year}",
    ????"~/sales.aspx");

    此代碼添加名為SalesRoute的路由。如果對路由規則進行了命名,那么在下面創建了相同的路由規則的時候,可以使用名稱區分它們。

  3. 在 RegisterRoutes 方法中,添加以下代碼:

    routes.MapPageRoute("ExpensesRoute",
    ????"ExpenseReport/{locale}/{year}/{*extrainfo}",
    ????"~/expenses.aspx",?true,
    ????new?RouteValueDictionary?{?
    ????????{?"locale",?"US"?},?
    ????????{?"year",?DateTime.Now.Year.ToString()?}?},
    ????new?RouteValueDictionary?{?
    ????????{?"locale",?"[a-z]{2}"?},?
    ????????{?"year",?@"\d{4}"?}?});

    此代碼添加名為 ExpensesRoute 的路由。此路由包括一個普通匹配參數 extrainfo。此代碼將 locale 參數的默認值設置為“US”,將 year 參數的默認值設置為今年。約束指定 locale 參數必須由兩個字母字符組成year 參數必須由四個數字組成。

使用路由創建超鏈接


當向網頁中添加超鏈接時,如果希望指定路由 URL 而不是物理文件,則您有兩個選擇:

  • 可以對路由URL進行硬編碼。

  • 可以指定路由參數名稱和值,并讓 ASP.NET 生成對應的 URL。如有必要,還可以指定路由名稱,以便唯一標識路由。如果稍后更改路由URL規則,則必須更新所有硬編碼的URL,但是如果讓 ASP.NET生成URL,則始終自動生成正確的URL(除非模式中的參數已更改)。

在下面的過程中,將使用硬編碼 URL 的超鏈接添加到網頁。

創建硬編碼的 URL
  1. 在“Solution”中,右擊 Web 項目,然后單擊"Add Item”。

    顯示"Add Item”對話框。

  2. 選擇“Web 窗體”模板,確保選中“Place code in separate file”,將名稱設置為“Links.aspx”,然后單擊“添加”。

    即會在“源”視圖中打開Links.aspx頁。

  3. 在開始和結束 <div> 標記之間添加以下標記:

    <asp:HyperLink?ID="HyperLink1"?runat="server"?
    ????NavigateUrl
    ="~/salesreportsummary/2010">
    ????Sales?Report?-?All?locales,?2010
    </asp:HyperLink>
    <br?/>
    <asp:HyperLink?ID="HyperLink2"?runat="server"?
    ????NavigateUrl
    ="~/salesreport/WA/2011">
    ????Sales?Report?-?WA,?2011
    </asp:HyperLink>
    <br?/>
    <asp:HyperLink?ID="HyperLink3"?runat="server"?
    ????NavigateUrl
    ="~/expensereport">
    ????Expense?Report?-?Default?Locale?and?Year?(US,?current?year)
    </asp:HyperLink>
    <br?/>

    此標記中使用硬編碼URL創建三個HyperLink控件。第一個超鏈接匹配銷售情況匯總路由的URL模式,第二個超鏈接匹配名為 SalesRoute 的路由,第三個超鏈接匹配名為ExpensesRoute 的路由。由于沒有為第三個超鏈接的 URL 指定參數,為該路由定義的默認值將傳遞給Expenses.aspx。

接下來,將添加標記(這些標記創建用于指定路由參數和路由名稱的超鏈接)以創建路由URL。

使用標記創建自動生成的URL
  • 在“源”視圖中保持Links.aspx 打開,在上一過程中創建的HyperLink控件后添加以下代碼:

    <asp:HyperLink?ID="HyperLink4"?runat="server"?
    ????NavigateUrl
    ="<%$RouteUrl:year=2011%>">
    ????Sales?Report?-?All?locales,?2011
    </asp:HyperLink>
    <br?/>
    <asp:HyperLink?ID="HyperLink5"?runat="server"?
    ????NavigateUrl
    ="<%$RouteUrl:locale=CA,year=2009,routename=salesroute%>">
    ????Sales?Report?-?CA,?2009
    </asp:HyperLink>
    <br?/>

    此標記使用 RouteUrl 表達式創建名為SalesSummaryRoute和SalesRoute的URL。第二個 RouteUrl 表達式指定路由的名稱,因為代碼中提供的參數列表可以匹配 ExpensesRoute URL模式或 SalesRoute URL模式。ExpensesRoute URL 模式具有 SalesRoute URL模式所沒有的 extrainfo 占位符,但是 extrainfo 是一個可用于放置各種信息的占位符,這意味著它是可選的。

在下面的過程中,將添加用于創建超鏈接的標記,并通過指定路由參數和路由名稱,使用代碼生成超鏈接的 URL。

使用代碼創建自動生成的 URL
  1. 在“源”視圖中保持 Links.aspx 打開,在上一過程中創建的 HyperLink控件后添加以下代碼:

    <asp:HyperLink?ID="HyperLink6"?runat="server">
    ????Expense?Report?-?CA,?2008
    </asp:HyperLink>
    <br?/>

    此標記不設置 NavigateUrl 屬性,因為該屬性將在代碼運行時生成。

  2. 在“Solution”中,展開 Links.aspx,然后打開 或 Links.aspx.cs。

  3. 為 System.Web.Routing命名空間添加 using 語句,如下面的示例所示:

    using System.Web.Routing;
  4. 在Page_Load方法中,添加以下代碼:


    此代碼創建包含三個參數的 RouteValueDictionary 類的實例。第三個參數為 category,它不在 URL 模式中。由于它不在 URL 模式中,category 參數及其值將呈現為查詢字符串參數。

  5. 在上一步中添加的代碼后面,添加以下代碼:

    VirtualPathData?vpd?=?
    ????RouteTable.Routes.GetVirtualPath(null,?"ExpensesRoute",?parameters);

    此代碼通過調用RouteCollection類的GetVirtualPath方法,實例化VirtualPathData對象。由于 SalesRoute URL 模式和 ExpensesRoute URL 模式具有相似的占位符,因此它調用接受路由名稱并指定 ExpensesRoute 值的重載。

  6. 在上一步中添加的代碼后面,添加以下代碼以設置超鏈接的 NavigateUrl 屬性:

    HyperLink6.NavigateUrl = vpd.VirtualPath;

在 ASP.NET 頁中訪問 URL 參數值


在 ASP.NET 路由已調用的 ASP.NET 頁中,可以在標記或代碼中檢索 URL 參數的值。例如,SalesReport 路由包括名為 locale 和 year 的參數,當收到匹配此模式的 URL 請求時,Sales.aspx 頁中的代碼可能需要將這些參數的值傳遞給 SQL 查詢。

在下面的過程中,將使用標記訪問 URL 參數值。此方法可用于在網頁中顯示參數值。

使用標記訪問 URL 參數值
  1. 右擊 Web 項目,然后單擊“添加新項”。

    顯示“添加新項”對話框。

  2. 選擇 Web 窗體模板,然后將名稱設置為“Expenses.aspx”。

    即會在“源”視圖中打開 Expenses.aspx 頁。

  3. 在開始和結束 <div> 標記之間添加以下標記:

    <h1>
    ????Expense?Report?for
    ????
    <asp:Literal?ID="Literal1"?
    ??????Text
    ="<%$RouteValue:locale%>"?
    ??????runat
    ="server"></asp:Literal>,
    ????
    <asp:Literal?ID="Literal2"?
    ??????Text
    ="<%$RouteValue:year%>"?
    ??????runat
    ="server"></asp:Literal>
    </h1>


    此標記使用 RouteValue 表達式提取并顯示傳遞到頁面的 URL 參數的值。

在下面的過程中,將使用代碼訪問參數值。此方法在您必須以某種方式(例如通過按此過程所示將 null 值轉換為默認值,或通過將信息傳遞給 SQL 查詢)處理數據時非常有用。

使用代碼訪問 URL 參數值
  1. 右擊 Web 項目,然后單擊“Add New Item”。

    顯示“New Item”對話框。

  2. 選擇“Web 窗體”模板,確保選中“將代碼放在單獨的文件中”,將名稱設置為“Sales.aspx”,然后單擊“添加”。

    即會在“源”視圖中打開 Sales.aspx 頁。

  3. 在開始和結束 <div> 標記之間添加以下標記:

    <h1>
    ????Sales?Report?for
    ????
    <asp:Literal?ID="LocaleLiteral"?runat="server"></asp:Literal>,
    ????
    <asp:Literal?ID="YearLiteral"?runat="server"></asp:Literal>
    </h1>


    此標記包括 Literal 控件,但不設置其 Text 屬性,因為將在代碼中設置這些屬性。

  4. 在“Solution”中,展開 Sales.aspx,然后打開Sales.aspx.cs。

  5. 在 Page_Load 方法中,添加以下代碼,將第一個 Literal 控件的 Text 屬性設置為下列值之一:

    • 文本“所有區域設置”(如果 locale 參數為 null)。

    • locale 參數的值(如果 locale 參數不為 null)。

      LocaleLiteral.Text = Page.RouteData.Values["locale"] == null ?
      "All locales" : Page.RouteData.Values["locale"].ToString();
  6. 在 Page_Load 方法中,添加以下代碼,以將第一個Literal控件的Text 屬性設置為 year URL 參數的值:

    YearLiteral.Text = Page.RouteData.Values["year"].ToString();

測試路由


現在,可以測試路由。

測試路由
  1. 在“解決方案資源管理器”中右擊 Links.aspx,并選擇“在瀏覽器中查看”。

    該頁將在瀏覽器中顯示,如下圖所示:

  2. 單擊每個超鏈接。

    請注意,每個超鏈接轉到一個其標題對應于該超鏈接的文本的頁面。

  3. 回到 Links.aspx 頁,選擇瀏覽器的“查看源”命令,檢查最后三個超鏈接的 URL。

    您將看到下面的自動生成的 URL:

    • http://[server]/[application]/SalesReportSummary/2011

    • http://[server]/[application]/SalesReport/CA/2009

    • http://[server]/[application]/ExpenseReport/CA/2008?category=recreation

  4. 將以 SalesReport/CA/2009 結束的 URL 復制到 Windows 剪貼板,然后關閉“查看源”窗口。

  5. 將該 URL 粘貼到瀏覽器的地址欄中,將 CA 更改為“invalidlocale”,將 2009 更改為“invalidyear”,然后按 Enter。

    將顯示類似下圖的頁面:

    您可以看到顯示 invalidlocale 和 invalidyear 值的銷售報表頁。由于沒有為 SalesRoute 路由指定任何約束,因此接受無效數據。

  6. 再次將該 URL 粘貼到瀏覽器的地址欄中,將 CA 更改為“invalidlocale”,將 2009 更改為“invalidyear”,將 SalesReport 更改為“ExpenseReport”,然后按 Enter。

    將顯示類似下圖的頁面:

    由于 URL 未解析為路由,您會看到“未找到”錯誤。ExpenseReport 路由將僅接受具有兩個字母字符的 locale 參數和具有四位數字的 year 參數。

原文鏈接

延伸閱讀

ASP.NET 4新增功能(一) ASP.NET核心服務

ASP.NET 4新增功能(二) ASP.NET Web 窗體增強功能

ASP.NET 4新增功能(三) 對Web標準的支持和輔助功能的增強

ASP.NET 4新增功能(四) 其它新功能及VS 2010對ASP.NET 4的支持改進(完)

轉載于:https://www.cnblogs.com/longgel/archive/2010/06/05/1752239.html

總結

以上是生活随笔為你收集整理的一步步学会使用ASP.NET 4 WEB应用程序中使用URL Routing(翻译)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。