0

ASP.NET MVC コントローラーがいくつかあります。これらの多くは、1 つ以上の必要な値 (id など) を取ります。これらの値は必須であるため、クエリ文字列引数ではなく、URL パスの一部にしたいと考えています。例えば:

// route should be MyController/Action1/[someKindOfId1]
public ActionResult Action1(int someKindOfId1) { ... }

// less commonly:
// route should be MyController/Action1/[someKindOfId2]/[someKindOfId3]
public ActionResult Action2(int someKindOfId2, int someOtherKindOfId3) { ... }

手動で各ルートをリストすることなく、これらのルートをマップする方法を探しています。たとえば、私は現在次のことを行っています。

routes.MapRoute(
    "Action1Route",
    "MyController/Action1/{someKindOfId1}",
    new { controller = "MyController", action = "Action1" }
);

私が考えたいくつかの方法: * デフォルトの {controller}/{action}/{id} ルートを使用し、パラメーターの名前を id に変更するか、[Bind] 属性を使用してそれらをバインドできるようにします (これが機能するかどうかはわかりません)。わかりやすい名前を付けながら、id ルート値に追加します。これでも、共通のコントローラー/アクション ベース URL に制限されます (悪くはありませんが、URL を現在のコード構成に結び付けるため、最も柔軟というわけでもありません)。* ルートを構成するアクション メソッドに配置できる属性を作成します。その後、すべてのコントローラーを反映して、アプリケーションの開始時にルートを構成できます。

これを行うためのベストプラクティス/組み込みのアプローチはありますか?

4

1 に答える 1