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中。我有一种感觉,我对路线和链接的假设是不真实的。
是否真的有办法使用路线以正确的格式生成新的链接?
如果其他人遇到这个问题,我最终偶然发现了这篇文章,这表明当您有连续的可选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 = "" }
);