4

I have the following route

routes.MapRoute(
    "GigDayListings",                                   // Route name
    "gig/list/{year}/{month}/{day}",                    // URL with parameters
    new { controller = "Gig", action = "List" },
    new
    {
        year = @"^[0-9]+$",
        month = @"^[0-9]+$",
        day = @"^[0-9]+$"
    }  // Parameter defaults
);

When I visit the URL

gig/list/2009/01/01

This route matches perfectly and my action is called.

Inside my view I have a helper which does the following:

var urlHelper = new UrlHelper(ViewContext);
string url = urlHelper.RouteUrl(ViewContext.RouteData.Values);

The string generated is:

http://localhost:3539/gig/list?year=2005&month=01&day=01

Why is it not

http://localhost:3539/gig/list/2005/01/01

What am I doing wrong?

4

2 に答える 2

9

あなたの問題は、呼び出しでルート名を指定しなかったことだと思います。使ってみて

UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values); 

ルート名でオーバーロードします。

乾杯!

于 2009-01-18T23:55:07.553 に答える
0

gig/list/2008/01/01 を指定したときに、実際に GigDayListings ルートを使用していることを確認しましたか? 違うものを使っているのかもしれません

于 2009-01-20T05:19:19.397 に答える