0

URL 書き換えの問題。次のリンクを使用してURLを呼び出すと

http://localhost:12719/product/18

製品 18 がパラメーターにリンクされていれば問題なく動作します。ただし、次を使用して呼び出すと。

http://localhost:12719/product/apple

Apple 製品名をコントローラーにマップしません。タイプ 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 に答える