問題
私の現在のプロジェクトでは、ほぼすべてのアクションに対して、さまざまな HTTP 要求ヘッダーに基づいてさまざまなことを行う必要があります。
現在、私は 1 つの大規模なコントローラー (すべて同じリソース タイプ用) を持っており、すべてのアクション メソッドには ActionName 属性があります (そのため、同じパラメーターを受け取り、異なることを行う同じアクションの複数のバージョンを持つことができます)。特定のヘッダーに特定の値があるかどうかをチェックする FilterAttribute (Preview 5 の AcceptVerbsAttribute とほぼ同じように実装)。
コードを別々のコントローラーにプッシュし、ヘッダーに基づいて RouteTable を選択させたいのですが、これを行う最もクリーンな方法が思いつきません。
例
たとえば、ファイルのリストがあるとします。サービスは、次の 2 つの方法のいずれかで要求を処理する必要があります。
クライアントは zip ファイルを要求し、「accept: application/zip」をヘッダーとして渡します。ファイルのリストを取得し、それらを zip ファイルにパックして、クライアントに送り返します。
クライアントは html ページを必要とするため、「accept: text/html」を渡します。サイトは、ファイルを一覧表示した表形式の html ページを返します。