20

ASP.NET MVC を使い始めたばかりです。

MapRoute と routes.Add の違いは何ですか? MapRoute を使用する必要がありますか? 複数のルートをマッピングできますか? どの「マップ」が優先されますか...最初または最後に呼び出したものは?

StackOverflow がユーザーに対して行うのと同様のことができるようにしたいと考えています。しかし、URL を次のパターンに合わせたいと思います:
"User/{domain}/{username}" を UserController にルーティングします。

その他のすべての要求については、一般的な ASP.NET MVC ルーティングを実行します。元:

        routes.MapRoute(
            "Default", "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = "" }  
        );

更新:
URL を使用すると: http://localhost:3962/User/MYDOMAIN/BTYNDALL
エラーが表示されます: HTTP 404 、または一時的に利用できません。

私が使用しているコードは次のとおりです。

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

        routes.MapRoute(
            "User",                                                     
            "User/{domain}/{username}",                           
            new { controller = "User", action = "Index" }      
        );

        routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                           
            new { controller = "Home", action = "Index", id = "" }  
        );

    }

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

3 に答える 3

37

MapRoute()に対する拡張メソッドRoutes.Add()です。MapRoute()許可されているよりも複雑なことを行う必要がない限り、 を使用してください。

ルートは定義された順序で評価されるため、最初に呼び出したルートが評価されます。

于 2009-02-04T22:30:30.213 に答える
4

使用する!

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

        routes.MapRoute(
            "User",                                                     
            "User/{domain}/{username}",                           
            new { controller = "User", action = "Index", username= UrlParameter.Optional }      
        );

       }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}
于 2010-05-01T17:58:26.513 に答える