0

URL 重写问题。当我使用以下链接给我打电话时

http://localhost:12719/product/18

它工作正常产品 18 链接到参数。但是,当我使用以下方法调用它时。

http://localhost:12719/product/apple

它不会将苹果产品名称映射到控制器,它认为您试图调用苹果类型的操作。

为什么它将数字而不是字符串映射到控制器参数?控制器参数是一种字符串。

路由如下。

routes.MapRoute(
    name: "product",
    url: "product/{id}/{slug}",
    defaults: new { controller = "product", action = "product", slug = UrlParameter.Optional },
    constraints: new { id = @"\d+" }
);
4

1 回答 1

1

您已在约束中指定的正则表达式中指定 id 仅为数字。constraints: new { id = @"\d+" }删除它,应该可以工作。因此,由于“产品”未通过\d+测试,您将在操作中将 id 设为 null。

routes.MapRoute(
    name: "product",
    url: "product/{id}/{slug}",
    defaults: new { controller = "product", action = "product", slug = UrlParameter.Optional }

);
于 2013-05-19T07:18:26.513 回答