0

私はasp.netmvc3を使用していて、同じコントローラーで2つの異なるタイプの要求があり、正しいメソッドにアクセスする際にエラーに直面しています

最初の条件

  routes.MapRoute(
        "Tag1", // Route name
        "Tag/{no}", // URL with parameters
        new { controller = "Tag", action = "TagCloud", no = UrlParameter.Optional } // Parameter defaults
    );

この場合、ユーザーはこのTag Controllerようにアクセスします。http://xyz.com/tag または http://xyz.com/tag/3、番号は実際にはページ番号です。

2番目の条件

 routes.MapRoute(
           "Tag", // Route name
           "Tag/{tag}/{page}", // URL with parameters
           new { controller = "Tag", action = "Index", tag = "tag", page = UrlParameter.Optional } // Parameter defaults
       );

この場合、ユーザーはこのようなタグの詳細ページを取得するためにタグの名前を指定する必要がありますhttp://xyz.com/tag/mvc。ここで、はタグmvcの名前です。ここで、はタグ 名であり、はオプションのページ番号です。http://xyz.com/tag/mvc/3mvc3

現在の問題は、両方が同時に機能していないことです。一番上にいる人は誰でも実行し、mvcは下の方をスキップします。よろしくお願いします。

4

2 に答える 2

0

2つのルート定義の順序を変更するとどうなりますか?最初の{no}部分に制約を追加します。存在しない場合は0である必要があります。

于 2012-11-10T06:48:45.057 に答える
0

これを試して:

routes.MapRoute(
   "Tag", // Route name
   "Tag/{tag}/{page}", // URL with parameters
   new { controller = "Tag", action = "Index", tag = "tag", page = UrlParameter.Optional },
   new { page = @"\d+" }
);

routes.MapRoute(
   "Tag1", // Route name
   "Tag/{no}", // URL with parameters
   new { controller = "Tag", action = "TagCloud", no = UrlParameter.Optional },
   new { no = @"\d+" }
);
于 2012-11-10T08:23:11.733 に答える