ASPを知る.NET 3.5 MVCルーティングカスタムルーティングの作成


このチュートリアルでは、ASPの使い方を学びます.NET MVCアプリケーションはカスタムルーティングを追加します.Globalをどうするかを学ぶことができますasaxファイルのデフォルトのルーティングテーブルがカスタムルーティングに変更されました.
簡単なASPについてNET MVCアプリケーションでは、デフォルトのルーティングテーブルがうまく機能しています.しかし、特定のルーティング要件があることがわかります.この場合、カスタムルーティングを作成できます.
例を挙げると、ブログアプリケーションを作成しています.間もなく来るリクエストをこのように処理したいかもしれません.
/LingLing/10-28-1987
ユーザーがこのリクエストを入力すると、日付10/28/1987に対応するブログエントリを返します.このタイプのリクエストを処理するには、カスタムルーティングを作成する必要があります.
以下のコードのGlobal.asaxにはBlogと命名された新しいカスタムルーティングが含まれており、/Lingg/エントリの日付のような要求を処理しています.
using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1
{

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


            routes.MapRoute(
                "Blog",                                           // Route name
                "LingLing/{entryDate}",                            // URL with parameters
                new { controller = "LingLing", action = "Entry" }  // Parameter defaults
            );


            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );

        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

ルーティングテーブルに追加されるルーティング順序は非常に重要です.私たちの新しいカスタムBlogルーティングは、既存のDefaultルーティングの前にあります.この順序を逆にすると、Defaultルーティングは常にカスタムルーティングではなく呼び出されます.
カスタムBlogルーティングは、/ARchive/を開始とする任意のリクエストに一致します.したがって、以下のURLはすべて一致します.
/LingLing/12-25-2009
/LingLing/10-6-2004
/LingLing/apple
カスタムルーティングは、到来する要求をArchiveというコントローラにマッピングし、Entry()アクションを呼び出します.Entry()メソッドが呼び出されると、エントリの日付がentryDateパラメータとして渡されます.
using System;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class ArchiveController : Controller
    {

        public string Entry(DateTime entryDate)
        {
            return "You requested the entry from " + entryDate.ToString();
        }

    }
}

 
コード内のEntry()メソッドは、DateTimeタイプのパラメータを受け入れることに注意してください.MVCフレームワークは非常にスマートで、URLのエントリの日付を自動的にDateTime値に変換するのに十分です.URLのエントリ日付パラメータをDateTimeに変換できない場合、エラーが発生します.