3

My route in global.asax in like this-

 routes.MapRoute(
            "History", // Route name
            "{controller}/{PageID}/{LanguageID}/{PreviousRevisionID}/{NewRevisionID}", // URL with parameters
            new { controller = "UserArea", action = "Index", PageID = 0, LanguageID = 0, PreviousRevisionID = 0, NewRevisionID = 0} // Parameter defaults
        );

I am using Html.actionLink to make url Like this.

@Html.ActionLink(item.CreatedTS.ToString(), "Index", new { PageID = item.PageID ,LanguageID = item.LanguageID , PreviousRevisionID = item.PreviousRevisionID , NewRevisionID = item.NewRevisionID , controller = "History" });

But the url generate like This

http://localhost:2582/History?PageID=2&LanguageID=3&PreviousRevisionID=98&NewRevisionID=103

But I want url Like this

http://localhost:2582/History/2/3/98/103

Where is the problem

user1006544
  • 1,514
  • 2
  • 16
  • 26

2 Answers2

4

Use RouteLink instead of ActionLink:

@Html.RouteLink(item.CreatedTS.ToString(), "History", new { PageID = item.PageID ,LanguageID = item.LanguageID , PreviousRevisionID = item.PreviousRevisionID , NewRevisionID = item.NewRevisionID , controller = "History" });

For the differences see this SO question.

Community
  • 1
  • 1
nemesv
  • 138,284
  • 16
  • 416
  • 359
0

It seems that you may have your routes defined in the wrong order. You want this route to be defined before the default route. So your routes may look something like this.

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "History", // Route name
            "{controller}/{PageID}/{LanguageID}/{PreviousRevisionID}/{NewRevisionID}", // URL with parameters
            new { controller = "UserArea", action = "Index", PageID = 0, LanguageID = 0, PreviousRevisionID = 0, NewRevisionID = 0 } // Parameter defaults
        );

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

The route debugger utility by Phil Haack is very helpful for debugging routes.

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

PM> Install-Package routedebugger

Justin
  • 512
  • 1
  • 8
  • 19