devdev
devdev

Reputation: 73

ASP.NET MVC Dynamic Action with Hyphens

I am working on an ASP.NET MVC project. I need to be able to map a route such as this:

http://www.mysite.com/Products/Tennis-Shoes

Where the "Action" part of the URL (Tennis-Shoes") could be one of a list of possibilities. I do not want to have to create a separate Action method in my controller for each. I want to map them all to one Action method and I will handle the View that is displayed from there.

I have this working fine by adding a route mapping. However, there are some "Actions" that will need to have a hyphen in them. ASP.NET MVC routing is trying to parse that hyphen before I can send it to my action. I have tried to create my own custom Route Handler, but it's never even called. Once I had a hyphen, all routes are ignored, even my custom one.

Any suggestions? Details about the hyphen situation? Thanks you.

Upvotes: 0

Views: 724

Answers (1)

Russ Cam
Russ Cam

Reputation: 125538

Looking at the URL and reading your description, Tennis-Shoes in your example doesn't sound like it should be an action, but a Route parameter. Let's say we have the following controller

public class ProductsController : Controller
{
    public ActionResult Details(string product)
    {
        // do something interesting based on product...

        return View(product);
    }
}

The Details action is going to handle any URLs along the lines of

http://www.mysite.com/Products/{product}

using the following route

routes.MapRoute(
   null,
   "Products/{product}",
   new
   {
       controller = "Products", 
       action = "Details"
   });

You might decide to use a different View based on the product string, but this is just a basic example.

Upvotes: 2

Related Questions