ASP.NET Core MVCのrouteシンプルルーティング構成

3018 ワード

ASP.NET Core MVCのルーティング構成は一般的に2つに分けられ,プロトコルルーティングと特性ルーティングである.2つのルーティングの構成方法について説明します.一:約束ルーティング約束ルーティングはその名の通り、私たちが約束したルーティングルールであり、プログラムは約束に基づいて、対応するcontrollerにアクセスし、まずASPを確立する.NET Core Webプロジェクトは、空のテンプレートを選択し、StartupクラスのConfigureServicesメソッドにMVCサービスを登録します.
public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

次に、コンフィギュア方式でmvcミドルウェアを使用する、ルーティングルール1を追加する.デフォルトのルーティング方法を使用します.
			//  mvc  
            //app.UseMvcWithDefaultRoute();
            

UseMvcWithDefaultRouteメソッドはデフォルトのルーティングであり、逆コンパイルソースは次のようになります.
public static IApplicationBuilder UseMvcWithDefaultRoute(
      this IApplicationBuilder app)
    {
      if (app == null)
        throw new ArgumentNullException(nameof (app));
      return app.UseMvc((Action) (routes => routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}")));
    }

これにより、そのルーティングルールはデフォルトhome/indexであり、idは空であってもよい.すなわち、urlがlocalhost:222/である場合、彼はデフォルトでhomeControllerのIndexメソッドを探す.もちろんurlがlocalhost:/222/about/meである場合、aboutControllerのMeメソッドにアクセスする.2.カスタムルーティングルールmvcミドルウェアでルーティングルールを定義できます.コードは次のとおりです.
app.UseMvc(builder =>
            {
                //       
                //Home/Index->HomeController Index(3)
                //    Home,Index
                //builder.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}");
            });

このように、デフォルト値を設定することもできますが、比較的柔軟です.二.プロパティルーティングControllerファイルでattributeプロパティを使用してルーティングを構成できます.例:
	[Route("")]//      ,        Controller
    public class AboutController
    {
        [Route("")]//      ,        action
        public string Me()
        {
            return "mike";
        }
        [Route("company")]
        public string Company()
        {
            return "no company";
        }
    }

上記のコードでは、AboutControllerのrouteコンテンツは「」、すなわちデフォルトアクセスセカンダリコントローラ、actionと同様に、デフォルトを設定しない場合は名前を付けることができます.
[Route("about")]//      ,        Controller
    public class AboutController
    {
        [Route("me")]//      ,        action
        public string Me()
        {
            return "mike";
        }
        [Route("company")]
        public string Company()
        {
            return "no company";
        }
    }

これによりurlはlocalhost:222/about/meでこのcontrollerのmeメソッドにアクセスできます.より柔軟な構成は次のとおりです.
[Route("[controller]/[action]")]//      ,
    public class OtherController
    {
        public string Me()
        {
            return "zfy";
        }
        public string Company()
        {
            return "no company";
        }
    }

このように構成すると、プログラムはurlに基づいて対応するcontrollerとactionを探します.一般的にwebapiはプロパティルーティングで構成されます.注意:2つの構成方法は共存できません.1つしか選択できません.