我在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值都在变化。
答案 0 :(得分:1)
您必须为您拥有的任何其他页面定义路线,并在映射您的产品详细路线之前映射这些路线。然后路线加工机制将首先找到它们并使用它们。
当然,您不必为每个动作映射路线。您可以为不同的控制器创建一些前缀,例如下面的示例,以捕获Home控制器操作的所有路由:
routes.MapRoute(
"Home",
"Home/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);