MVC链接创建

本文关键字:创建 链接 MVC | 更新日期: 2023-09-27 18:00:02

使用此路由:

    routes.MapRoute(
        "PartListRoute",
        "Products/PartList/{Manufacturer}/{Product}/{PartNumber}",
        new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional, Product = UrlParameter.Optional, PartNumber = "" }
    );

我正试图根据从数据库中提取的制造商列表创建一个从/Products/PartList到/Products/PartyList/Manufacturer1的链接。mfr。Name是制造商的名称。

该路由应指向类似以下的URL

  • /产品/零件清单/
  • /产品/零件清单/制造商1/
  • /产品/零件清单/制造商3/产品1/
  • /产品/零件清单/制造商2/产品4/DN-438

我最近的一次是

@Html.RouteLink(mfr.Name, "PartListRoute", new { Manufacturer = mfr.Name} )

它将制造商名称放在文本中,但不将其添加到URL中。我有一种感觉,我对路线和链接的假设是不真实的。

是否真的有办法使用路线以正确的格式生成新的链接?

MVC链接创建

如果其他人遇到这个问题,我最终偶然发现了这篇文章,这表明当您有连续的可选URL参数时会出现错误。

http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

我不会声称我完全理解解释,但创建所有指向原始控制器的额外路线似乎已经解决了问题:

        routes.MapRoute(
            "PartListRoute",
            "Products/PartList/{Manufacturer}",
            new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional }
        );
        routes.MapRoute(
            "PartListRoute2",
            "Products/PartList/{Manufacturer}/{Product}",
            new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional, Product = UrlParameter.Optional }
        );
        routes.MapRoute(
            "PartListRoute3",
            "Products/PartList/{Manufacturer}/{Product}/{PartNumber}",
            new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional, Product = UrlParameter.Optional, PartNumber = "" }
        );