【问题标题】:MVC Link CreationMVC 链接创建
【发布时间】:2011-06-20 19:10:40
【问题描述】:

使用这条路线:

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

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

路由应该指向如下网址

  • /Products/PartList/
  • /Products/PartList/Manufacturer1/
  • /Products/PartList/Manuracturer3/Product1/
  • /Products/PartList/Manuracturer2/Product4/DN-438

离我最近的是

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

将制造商名称放在文本中,但不将其添加到 URL。我感觉我在假设一些关于路线和链接的东西是不正确的。

真的有办法使用 Route 以正确的格式生成新的 Link 吗?

【问题讨论】:

    标签: c# model-view-controller routes


    【解决方案1】:

    万一其他人遇到这个问题,我终于偶然发现了这篇文章,表明当您有连续的可选 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 = "" }
            );
    

    【讨论】:

      猜你喜欢
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多