我認爲我的路線比他們需要的更先進。 我有幾個產品處於幾個不同的3級別類別中,但我的大多數產品都屬於2級類別。沒有產品屬於1級類別。2級或3級的MVC URL路線
因此,它是這樣的:
*貓/ SUBCAT/subSubCat /產品
*貓/ SUBCAT /產品
我想有像我的路線定義我的網址。
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
屬性,該屬性爲null(第一級類別)或填充其父類別。
隨着2級產品,我可以寫(在我的路線,沒有subSubCategory
)像這樣的鏈接:
@Url.RouteUrl("ProductDetails", new
{
category = item.Category.ParentCategory.Name,
subCategory = item.Category.Name,
id = item.ID,
productName = item.Name
})
但現在如果我有一個是產品的2或3個層次我想寫這個下面,但當然我得到nullrefexception 2級產品,因爲他們沒有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,請查看屬性路由(http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5。 ASPX)。更容易! –