3

現在のURLを取得し、URLに追加のパラメーターを追加したいと思います(たとえば、?id = 1)

ルートを定義しました:

        routes.MapRoute(
            "GigDayListings",                                   // Route name
            "gig/list/{year}/{month}/{day}",                    // URL with parameters
            new { controller = "Gig", action = "List" }         // Parameter defaults
        );

        In my view I have a helper that executes the following code: 

        // Add page index
        _helper.ViewContext.RouteData.Values["id"] = 1;

        // Return link
        var urlHelper = new UrlHelper(_helper.ViewContext);
        return urlHelper.RouteUrl( _helper.ViewContext.RouteData.Values);

ただし、これは機能しません。

元のURLが次の場合:gig / list / 2008/11/01

私は得る

gig / list /?year = 2008&month = 11&day = 01&id = 1

URLを次のようにします:controller / action / 2008/11/01?id = 1

私は何が間違っているのですか?

4

1 に答える 1

1

ルールの順序には意味があります。このルールを最初に挿入してみてください。

また、必要に応じて制約を定義することを忘れないでください。これにより、ルールの一致が向上します。

routes.MapRoute(
    "GigDayListings",                                // Route name
    "gig/list/{year}/{month}/{day}",                // URL with parameters
    new { controller = "Gig", action = "List" },    // Parameter defaults
    new
        {
            year = @"^[0-9]+$",
            month = @"^[0-9]+$",
            day = @"^[0-9]+$"
        }    // Constraints
);
于 2008-12-14T12:47:31.073 に答える