如何在asp.net mvc3中为特定的Controller和Action创建url路由

时间:2013-02-22 08:44:56

标签: c# asp.net-mvc-3 url-routing

我在Asp.net mvc3应用程序中工作。我已经为这样的产品详细信息页面创建了网址

routes.MapRoute(
   "ProductDetail",
   "{category}/{title}-{id}",
   new { controller = "ProductDetail", action = "Index" }
); 

使用此

的其他控制器
routes.MapRoute(
  "Default",   
  "{controller}/{action}/{id}",    
  new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

以下代码创建此网址

www.example.com/Shoes/blackshoes-100

现在问题是我想在ProductDetail页面上使用这个url,如果添加任何其他控制器和动作名称,它将像这样重定向到ProductDetail页面

www.example.com/Home/Index-100

如何为ProductDetail页面限制此网址?

这是正确的方法吗?

我想隐藏Productdetail页面的Controller和Action。

每种产品的类别,标题和ID值都在变化。

1 个答案:

答案 0 :(得分:1)

您必须为您拥有的任何其他页面定义路线,并在映射您的产品详细路线之前映射这些路线。然后路线加工机制将首先找到它们并使用它们。

当然,您不必为每个动作映射路线。您可以为不同的控制器创建一些前缀,例如下面的示例,以捕获Home控制器操作的所有路由:

routes.MapRoute(
    "Home",
    "Home/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);