带有连字符的ASP.NET MVC动态操作

时间:2013-01-24 23:14:51

标签: asp.net-mvc asp.net-mvc-routing

我正在开发一个ASP.NET MVC项目。我需要能够映射这样的路线:

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

URL(Tennis-Shoes“)的”Action“部分可能是一个可能的列表之一。我不想在我的控制器中为每个创建一个单独的Action方法。我想映射它们所有的一个Action方法,我将处理从那里显示的视图。

通过添加路由映射,我可以正常工作。但是,有些“动作”需要在其中加上连字符。 ASP.NET MVC路由尝试解析该连字符,然后才能将其发送到我的操作。我试图创建自己的自定义路由处理程序,但它甚至从未调用过。一旦我有一个连字符,所有路线都会被忽略,甚至是我的自定义路线。

有什么建议吗?有关连字符情况的详细信息?谢谢你。

1 个答案:

答案 0 :(得分:2)

查看网址并阅读说明,示例中的Tennis-Shoes听起来不应该是一个操作,而是一个Route参数。假设我们有以下控制器

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

        return View(product);
    }
}

Details操作将处理

行中的所有网址
http://www.mysite.com/Products/{product}

使用以下路线

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

您可能决定使用基于product字符串的其他视图,但这只是一个基本示例。