Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make Url.Action not to preserve route values?

I have an MVC 2.0 application where I have a list of items that can be browsed by their first letter and I have a tab on the master page for the whole list of items.

What I would like is that the tab on the master page always should go to:

/items

And there are the letters of the abc that go to the items starting with the letter. So for example for the a it should go to:

/items/a

To generate the link for the tab in the master page I use:

Url.Action("Index", "Items")

The problem is that if I am looking at the items starting with a, so I am at /items/a then the tab also points to this location and not just /items.

Anyone knows why is that, and what can I do to always point to /items in the tab using proper UrlHelper methods?

EDIT: and my routs are the following:

    routes.MapRouteLowercase(
        "DefaultPrefixed",                                              // Route name
        "{controller}/{action}/{q}",                           // URL with parameters
        new { controller = "Items", action = "Index", q = "" },  // Parameter defaults
        new { q = @"[a-z]{1}" }                                        // constraint
    );

    routes.MapRouteLowercase(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );
like image 786
apolka Avatar asked Dec 12 '22 21:12

apolka


1 Answers

This will depend on your routes but assuming you are using the default route:

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

You can always optional route values to blank:

Url.Action("Index", "Items", new { id = string.Empty })
like image 183
Darin Dimitrov Avatar answered Jan 02 '23 05:01

Darin Dimitrov