Asp.net-core-attribute-routes
ASP.NET Core-属性ルート
この章では、ルーティングに対する別のアプローチを学びます。これは属性ベースのルーティングです。 属性ベースのルーティングを使用すると、コントローラークラスおよびこれらのクラス内のメソッドでC#属性を使用できます。 これらの属性には、特定のコントローラーを呼び出すタイミングをASP.NET Coreに伝えるメタデータがあります。
- これは、規則ベースのルーティングの代替手段です。 *ルートは表示される順序、つまり登録した順序で評価されますが、特にURLに異なるパラメーターを設定したい場合やURLに異なるリテラルを設定したい場合は、複数のルートをマップするのが一般的です。
例
簡単な例を見てみましょう。* FirstAppDemo プロジェクトを開き、ブラウザーでアプリケーションを実行します。 */about を指定すると、次の出力が生成されます-
ここで必要なのは、 /about を指定すると、アプリケーションがAboutControllerのPhoneアクションを呼び出す必要があるということです。 ここでは、Route属性を使用して、このコントローラーに明示的なルートを強制できます。 この属性は名前空間 Microsoft.AspNet.Mvc にあります。
以下は、属性ルートが追加される AboutController の実装です。
ここでは、このルートを次のように表示し、Phoneアクションに対して空の文字列を指定しました。つまり、このメソッドを取得するためにアクションを指定する必要はありません。 ユーザーは/aboutにアクセスするだけです。 Countryアクションでは、ルート属性に「国」を指定しました。 AboutControllerを保存し、ブラウザーを更新して/aboutに移動すると、Phoneアクションが表示されます。
URLのセグメントにコントローラーの名前を含める場合、コントローラー名を明示的に使用する代わりに、角括弧内にトークンコントローラーを使用できます。 これにより、次のプログラムに示すように、この位置でこのコントローラーの名前を使用するようにASP.NET MVCに指示します。
このように、コントローラーの名前を変更した場合、ルートを変更することを覚えておく必要はありません。 同じことはアクションにも当てはまり、コントローラーとアクションの間には暗黙的にスラッシュ(/)があります。 これは、URLと同様に、コントローラーとアクションの間の階層関係です。 このコントローラーをもう一度保存しましょう。 ほとんどの場合、同じ結果が表示されます。
/about/countryを指定してみましょう。 これにより、その国のアクションに到達できます。