2013-02-22 54 views
2

我在Asp.net MVC3 application.I工作具体控制器和操作URL路径已经创建了商品详细页的URL这样如何创建在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

现在问题是,我想,如果添加任何其他控制器和动作名称会重定向到产品详情页这样

www.example.com/Home/Index-100

我怎样才能限制这个网址的产品详情页面中使用这个网址的产品详情页?

这是正确的方法吗?

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

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

回答

1

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

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

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

是的,我使用其他controller.but这条路时,使用URL这样www.example.com/Home/Index-100。这里的家庭控制器和索引行动对待类似,并标题 – 2013-02-22 08:59:51

+0

如果你的意思是默认的路线就像在你的问题那么它不能工作..你必须为每个控制器指定这样的路线..你也必须记得注册这个在你注册你的ProductDetails路由之前进行路由。 – 2013-02-22 09:07:08