乾物:asp.net Core3.0領域とルーティング構成の方法

4062 ワード

乾物:asp.net Core3.0領域とルーティング構成の方法


ASP.NET Core 3.0ではルート構成が2.0と異なります
一、MVCサービス登録
ASP.NET Core 3.0には、内部のMVCスキームを登録するための新しいオプションStartupが追加されています.ConfigureServices.
3つの新しいトップレベルの拡張方法は、MVCスキームでIServiceCollectionで使用できます.テンプレートは、これらの新しい方法を使用します.UseMvcではありません.ただし、AddMvcは以前のバージョンのように継続しています.
次の例では、ビューまたはページのサポートではなく、コントローラおよびAPIに関連する機能を追加します.APIテンプレートはこのコードを使用します.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
 }
次の例では、コントローラ、APIに関連する機能、およびページのサポートではありませんが、ビューを追加します.Webアプリケーション(MVC)テンプレートでは、このコードを使用します.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
次の例では、Razorページと最小コントローラのサポートを追加します.Webアプリケーションテンプレートでは、次のコードを使用します.
public void ConfigureServices(IServiceCollection services)
{
 services.AddRazorPages();
}
さらに組み合わせることができる新しい方法.以下の例はAddMvcASPを呼び出すのと同じである.NET Core 2.2:
public void ConfigureServices(IServiceCollection services)
{
 services.AddControllers();
 services.AddRazorPages();
}
二、Startup.コンフィギュレーションは一般的に推奨されません:UseRoutingを追加します.アプリケーションがUseStaticFilesを呼び出すと、UseStaticFilesの前にUseRoutingが配置されます.AuthorizePageや[Authorize]などの認証/認可機能を使用する場合、UseAuthenticationおよびUseAuthorizationの後にUseRoutingが適用されます.[EnableCors]などのCORS機能が適用されている場合は、UseCorsの次のステップが配置されます.UseMvcまたはUseSignalRとUseEndpointsを置き換えます.以下はStartupです.Configureの典型的なASP.NET Core 2.2応用中:
public void Configure(IApplicationBuilder app)
{
 ...
 
 app.UseStaticFiles();
  
 app.UseAuthentication();
 
 app.UseSignalR(hubs =>
 {
  hubs.MapHub("/chat");
 });
 
 app.UseMvc(routes =>
 {
  routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
 });
}
現在のコントローラマッピング内でUseEndpointsが発生しています.属性ルーティングが適用された場合、MapControllersを追加します.ルーティングには多くのフレームワークに対するASPが含まれる.NET Core 3.0以降のサポートでは、属性ルーティングを追加するコントローラが参加しています.MapRouteは、MapControllerRoute MapAreaRouteを使用してMapAreaControllerRouteを使用しています.ルーティングにはMVCだけではないサポートが含まれているため、用語を変更してこれらの方法を明確に説明しました.MapControllerRoute/MapAreaControllerRoute/MapDefaultControllerRouteのように、追加する順序で適用されます.1番目のより具体的なルーティング(領域のルーティングなど).次の例では、MapControllersがプロパティルーティングのコントローラサポートを追加しています.MapAreaControllerRouteは、コントローラの従来のルーティング領域を追加します.MapControllerRouteコントローラの通常のルーティングを追加します.次に、マッピングRazorページ内でUseEndpointsが発生します.アプリケーションがRazorページを使用する場合は、MapRazorPagesを追加します.エンドポイントルーティングには、多くのフレームワークのサポートにRazorページを追加することが含まれているため、現在参加しています.更新後asp.netCore3.0でスタートConfigureコード:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
   if (env.IsDevelopment())
   {
    app.UseDeveloperExceptionPage();
   }
   else
   {
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
   }
 
   app.UseHttpsRedirection();
   app.UseStaticFiles();
 
   app.UseCookiePolicy();
 
   app.UseRouting();
 
   app.UseAuthorization();
 
   app.UseEndpoints(endpoints =>
   {
    endpoints.MapControllerRoute(
     name: "default",
     pattern: "{controller=Home}/{action=Index}/{id?}");
 
    endpoints.MapAreaControllerRoute(
     name: "areas", "areas",
     pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
   });
  }

パーティションルーティングを行うには、コントローラControllerヘッダにAreaとRouteラベルを付ける必要があります.そうしないとaspのようにはなりません.netCore2.0の自動ルーティングコントローラとアクション.サンプルコードは次のとおりです.
namespace WebApplication1.Areas.CMS.Controllers
{
 [Area("CMS")]
 [Route("CMS/[controller]/[action]")]
 public class NewsController : Controller
 {
  public IActionResult Index()
  {
   return View();
  }
  public IActionResult List()
  {
   return View();
  }
 }
}
この2つの文は必ず[Area("CMS")]、[Route("CMS/[controller]/[action]")]を加えなければならない.
以上がこの文章のすべての内容を総括して、本文の内容がみんなの学習あるいは仕事に対して一定の参考学習価値を持つことを望んで、みんなの支持に感謝します.