gpt4 book ai didi

c# - 具有 2 个或 3 个级别的 MVC URL 路由

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:40 25 4
gpt4 key购买 nike

我认为我的路线比他们需要的更先进。我有一些产品属于几个不同的 3 级类别,但我的大部分产品都属于 2 级类别。没有产品属于 1 级类别。

所以它是这样的:
* cat/subCat/subSubCat/产品
* 猫/子猫/产品

而且我希望在我的 route 定义我的 URL。
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 都有一个 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 级产品,我想在下面写这个,但是我当然会在 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?也许重做我的路线对我来说最好?希望我给了你足够的信息。

最佳答案

看起来您为 2 级 url 使用了错误的路由名称。更改为:

@Url.RouteUrl("CategoryIndex", new
{
category = item.Category.ParentCategory.Name,
subCategory = item.Category.Name,
id = item.ID,
productName = item.Name
})

关于c# - 具有 2 个或 3 个级别的 MVC URL 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34614378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com