3

ASP.net 4.0では、URLルーティングがWebフォームに組み込まれていることを理解しています。私がこのようなことをすることができるのは素晴らしいことです:

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("Category", "list/{id}/{name}", "~/category.aspx");
    routes.MapPageRoute("Product", "item/{id}/{name}", "~/product.aspx");
}

しかし、すべてのファイルに手動でルートを追加せずに、拡張子のないURLを対応する.aspxにルーティングするための組み込みの方法はありますか?例えば:

account/login => account/login.aspx
contact-us => contact-us.aspx

ありがとう


ルートの最後にキャッチオールルールとして以下を追加しましたが、機能しているようです。

routes.MapPageRoute("Default", "{*file}", "~/{file}.aspx");
4

1 に答える 1

5

MVCのようにプレースホルダーを使用できます

VB.NET

    routes.MapPageRoute(
        "ThreeLevels",
        "{folder}/{file}/{id}",
        "~/{folder}/{file}.aspx", True,
        New RouteValueDictionary From {
            {"folder", "Home"},
            {"file", "Default"},
            {"id", Nothing}
        })

C#

    routes.MapPageRoute(
        "ThreeLevels",
        "{folder}/{file}/{id}",
        "~/{folder}/{file}.aspx", true,
        new RouteValueDictionary {
            {"folder", "Home"},
            {"file", "Default"},
            {"id", null}
        });
于 2013-01-02T03:18:03.950 に答える