【发布时间】:2016-04-09 10:28:56
【问题描述】:
我认为我的路线比他们需要的更先进。 我有一些产品属于几个不同的 3 级类别,但我的大多数产品都属于 2 级类别。没有产品属于 1 级类别。
所以它是这样的:
* 猫/subCat/subSubCat/产品
* 猫/子猫/产品
我想在我的路线中定义我的网址。
2 索引:../Shop/Sortiment/cat/subCat
2 详细信息:../Shop/Sortiment/cat/subCat/product/1/name
3 索引:../Shop/Sortiment/cat/subCat/subSubCat
3 详细信息:../Shop/Sortiment/cat/subCat/subSubCat/product/2/name
routes.MapRoute(
name: "CategoryIndex",
url: "Shop/Sortiment/{category}/{subCategory}/{subSubCategory}",
defaults: new { controller = "Sortiment", action = "Index", subCategory= UrlParameter.Optional, subSubCategory = UrlParameter.Optional }
);
routes.MapRoute(
name: "ProductDetails",
url: "Shop/Sortiment/{category}/{subCategory}/{subSubCategory}/product/{id}/{productName}",
defaults: new { controller = "Sortiment", action = "Details", subSubCategory = UrlParameter.Optional, productName = UrlParameter.Optional }
);
我的产品类有一个Category Category 属性。每个 Category 都有一个 virtual Category ParentCategory 属性,该属性要么为空(第一级类别),要么填充了它的父类别。
使用 2 级产品,我可以编写这样的链接(在我的路线中没有 subSubCategory):
@Url.RouteUrl("ProductDetails", new
{
category = item.Category.ParentCategory.Name,
subCategory = item.Category.Name,
id = item.ID,
productName = item.Name
})
但是现在如果我有 2 级或 3 级的产品,我想在下面写这个,但是我当然会在 2 级产品上得到 nullrefexception,因为它们没有 2 ParentCategory。
@Url.RouteUrl("ProductDetails", new
{
category = item.Category.ParentCategory.ParentCategory.Name,
subCategory = item.Category.ParentCategory.Name,
subSubCategory = item.Category.Name,
id = item.ID,
productName = item.Name
})
那么我需要怎么做才能以我想要的方式获取我的 URL?也许对我来说最好重做我的路线?希望我给了你足够的信息。
【问题讨论】:
-
我从不喜欢这种形式的路由。如果您使用的是 MVC 5 (blogs.msdn.com/b/webdev/archive/2013/10/17/…),请查看属性路由。容易多了!
标签: c# asp.net-mvc routes