2

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

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

现在的问题是,如果添加任何其他控制器和操作名称,我想将此 URL 用于 ProductDetail 页面,它将像这样重定向到 ProductDetail 页面

www.example.com/Home/Index-100

如何限制 ProductDetail 页面的此 url?

这是正确的方法吗?

我想隐藏 Productdetail 页面的控制器和操作。

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

4

1 回答 1

1

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

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

routes.MapRoute(
    "Home",
    "Home/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);
于 2013-02-22T08:49:52.677 回答