0

オプションのパラメーターを取る「ユーザー」コントローラーのインデックス アクションが必要です。

/Users/{id}

または

/Users

私は避けたい:

/Users/Index/{id}

または

/Users/Index/

/Users/{id} を Index アクションにマップするルートを追加しました。

routes.MapRoute( "Users",
                 "Users/{id}",
                 new { controller = "Users", action = "Index", id =
                 UrlParameter.Optional});

それはうまくいきます。ユーザー コントローラに別のアクション「追加」をオプション パラメータとともに追加したときに、問題が発生しました。以前に追加したルートは、Add を Index アクションのパラメーターとして誤解しています。/Users/Add に対して「インデックス」アクションがトリガーされます。

両方を最大限に活用するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

2

数値のみを許可するようにconstraintsプロパティを設定します。これでルーティングの問題が修正されるはずです。

routes.MapRoute( "Users",
    "Users/{id}",
    new { controller = "Users", action = "Index", id = UrlParameter.Optional },
    new { id = "[0-9]+" }
);

編集します。

正規表現制約を使用せずに、別の方法でそれを行うことができます。ルートUsers/Addを明示的に追加し、インデックスルートの前に追加します。

routes.MapRoute( "Users",
    "Users/Add/{id}",
    new { controller = "Users", action = "Add", id = UrlParameter.Optional }
);
于 2012-06-22T05:20:38.663 に答える
0

コントローラのアクションごとにルートを作成する必要はありません。プロジェクトの作成の開始時にglobal.asaxにあるデフォルトルートは、ニーズに十分対応できます。

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Account", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
于 2012-06-22T05:20:21.590 に答える