Asp.net-core-attribute-routes

提供:Dev Guides
移動先:案内検索

ASP.NET Core-属性ルート

この章では、ルーティングに対する別のアプローチを学びます。これは属性ベースのルーティングです。 属性ベースのルーティングを使用すると、コントローラークラスおよびこれらのクラス内のメソッドでC#属性を使用できます。 これらの属性には、特定のコントローラーを呼び出すタイミングをASP.NET Coreに伝えるメタデータがあります。

  • これは、規則ベースのルーティングの代替手段です。 *ルートは表示される順序、つまり登録した順序で評価されますが、特にURLに異なるパラメーターを設定したい場合やURLに異なるリテラルを設定したい場合は、複数のルートをマップするのが一般的です。

簡単な例を見てみましょう。* FirstAppDemo プロジェクトを開き、ブラウザーでアプリケーションを実行します。 */about を指定すると、次の出力が生成されます-

単純な例

ここで必要なのは、 /about を指定すると、アプリケーションがAboutControllerのPhoneアクションを呼び出す必要があるということです。 ここでは、Route属性を使用して、このコントローラーに明示的なルートを強制できます。 この属性は名前空間 Microsoft.AspNet.Mvc にあります。

以下は、属性ルートが追加される AboutController の実装です。

using Microsoft.AspNet.Mvc;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace FirstAppDemo.Controllers {
   [Route("about")]
   public class AboutController {
      [Route ("")]
      public string Phone() {
         return "+49-333-3333333";
      }
      [Route("country")]
      public string Country() {
         return "Germany";
      }
   }
}

ここでは、このルートを次のように表示し、Phoneアクションに対して空の文字列を指定しました。つまり、このメソッドを取得するためにアクションを指定する必要はありません。 ユーザーは/aboutにアクセスするだけです。 Countryアクションでは、ルート属性に「国」を指定しました。 AboutControllerを保存し、ブラウザーを更新して/aboutに移動すると、Phoneアクションが表示されます。

モバイル番号

*/about/country* を指定してみましょう。 これにより、その国のアクションに到達できます。

同じ国の結果

URLのセグメントにコントローラーの名前を含める場合、コントローラー名を明示的に使用する代わりに、角括弧内にトークンコントローラーを使用できます。 これにより、次のプログラムに示すように、この位置でこのコントローラーの名前を使用するようにASP.NET MVCに指示します。

using Microsoft.AspNet.Mvc;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace FirstAppDemo.Controllers {
   [Route("[controller]")]
   public class AboutController {
      [Route ("")]
      public string Phone() {
         return "+49-333-3333333";
      }
      [Route("[action]")]
      public string Country() {
         return "Germany";
      }
   }
}

このように、コントローラーの名前を変更した場合、ルートを変更することを覚えておく必要はありません。 同じことはアクションにも当てはまり、コントローラーとアクションの間には暗黙的にスラッシュ(/)があります。 これは、URLと同様に、コントローラーとアクションの間の階層関係です。 このコントローラーをもう一度保存しましょう。 ほとんどの場合、同じ結果が表示されます。

コントローラーの名前変更

/about/countryを指定してみましょう。 これにより、その国のアクションに到達できます。

コントローラーの名前変更