web-dev-qa-db-ja.com

複数の領域へのエンドポイントルートを定義する方法

私はMapAreaControllerRoute()を複数の領域に経路指定しようとしています。ただし、ASP.NET CORE 3.0では、設定する必要があるareaName:パラメータがあり、各ルートを単一の領域に制限します。私はどのようにして使用できるかが理解できません 1複数の領域に働くルート。

ここではスタックオーバーフローに関する多くの問題を読みましたが、これはASP.NET CORE 3.0の新しい要件であるようです。 ASP.NET CORE <= 2.2では、セットを定義せずにMapRoute()を作成できます。areaName

現在、Startup.csでは、エンドポイントを次のように定義します。

app.UseEndpoints(endpoints =>
{
  endpoints.MapAreaControllerRoute(
    name: "Area1",
    areaName: "Area1",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
  );

  endpoints.MapAreaControllerRoute(
    name: "Area2",
    areaName: "Area2",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
  );

  endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

});

確かに、すべての分野をカバーするための単一の経路を定義する方法があるはずですか?

10
Per Malmstedt

MapControllerRoute()を使用して、エリアの一般的なパターンを作成できます。

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "areas",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );
    endpoints.MapDefaultControllerRoute();
});
 _

その後、エリアコントローラはArea属性を必要とするだけです。

[Area("AreaName")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
 _
1
pseudocoder