2014-02-12 140 views
0

我正在重新设计一个站点,但是在MVC5开始开发之后给出的一个要求是保持当前的URL结构不变。MVC5路由问题

该网站是所有设计,但我现在正在寻找一种方式来使用路由来建立这些网址。

我见过一吨的帖子和教程解释标准:

routes.MapRoute(
name: "Default", 
url: "{controller}/{action}/{id}", 
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

和它的一些细微变化,如:

{controller}/{action}/{name} 

但没有创建长文件夹结构致密我我正在努力保持。

(编码格式)

[http://www.domain.com/menu/.Dessert....../.Ice-Cream......./.Flavor-Ice-Cream/] 
[http://www.domain.com/menu/{categoryName}/{subCategoryName}/{productInThisSubCategory}] 

一些有更深的文件夹结构,太。

我肯定有一个简单的方法来做到这一点,但是....

回答

1

使用AttributeRoutes。

[HttpGet, Route("menu/{categoryName}/{subCategoryName}/{productName}")] 
public ActionResult Menu(string categoryName, string subCategoryName, 
    string productName) 
{ 
    ... 
} 

属性航线MVC5是新的,但基于流行AttributeRouting.NET工具,它已经推出MVC4和较低的项目有一段时间了。

它允许您保持路线定义更接近它的工作行为,避免非传统路线的“神路线文件”模式。

+0

完美。谢谢您的帮助!保持好状况 :) – ZombieBunnies