所以我正在研究MVC 4应用程序。我的问题是针对某个控制器,网址可以是http://domain/category/clothing/1256
,也可以是http://domain/category/clothing/shirts/formal/128
'。正如您所看到的,网址的深度会发生变化,但所有网址都必须路由到类别控制器。
由于url的最大部分未知,我无法使用User Routeconfig,因为我不知道参数何时会出现。
routes.MapRoute(
name: "Category",
url: "Category/{ignore}/{id}/{SubCatId}/{SubSubCatId}",
defaults: new { controller = "Category", action = "Index", CatId = UrlParameter.Optional, SubCatId = UrlParameter.Optional, SubSubCatId = UrlParameter.Optional },
namespaces: new[] { "CSPL.B2C.Web.Controllers" },
constraints: new { id = @"\d+" }
);
上述代码无效,因为它只占一个级别。关于如何实现这个的任何想法
类别控制器的索引方法
public ActionResult Index(string id, string SubCatId, string SubSubCatId)
{
return view();
}
答案 0 :(得分:0)
你唯一的选择是一个全能的参数。但是,有两点需要注意:
data
,所以你必须用正则表达式或其他东西手动解析你需要的各个位。基本上,您只需将路线更改为:
/
然后,您需要更改您的操作以接受此新参数:
routes.MapRoute(
name: "Category",
url: "Category/{*path}",
defaults: new { controller = "Category", action = "Index" },
namespaces: new[] { "CSPL.B2C.Web.Controllers" }
);