【ASP.NET Core Web】コントローラーやアクションのURLをネストしたりカスタムしたりする

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【ASP.NET Core Web】コントローラーやアクションのURLをネストしたりカスタムしたりする

2023-9-14 | ,

ASP.NET Core WebでコントローラーやアクションのURLをネストしたりカスタムしたりしたい!

/controller1/controller2/action/とか/controller/aciton1/action2/みたいな感じ!

概要

今回の記事では、MVC(AddControllersWithViews)を使ってるASP.NET Core WebでのコントローラーやアクションのURLをネストしたりカスタムしたりする手順を掲載する。Pages(AddRazorPages)を使ってる場合についても追記した。

仕様書

環境

  • .NET 7.0

手順書

コントローラーとアクション、PagesのURLをネストしたりカスタムする手順を3パターンを挙げる。コントローラーとアクションは併用可。

コントローラーのURLをネストする

コントローラーのURLをネストしたりカスタムするには、コントローラーにルーティング属性を設定する。
account/setting/locationを発行する例。

    [Route("account/setting")]
    public class AccountController : Controller
    {
        [HttpGet("location")]
        [HttpPost("location")]
        public IActionResult GetLocation()
        {
            return Ok("nya-n");
        }
    }

[Route("account/setting")]の部分がルーティング属性になる。

アクションのURLをネストする

アクションのURLをネストしたりカスタムするには、アクションにルーティング属性を設定する。
account/get/nameを発行する例。

    [Route("account")]
    public class AccountController : Controller
    {
        [HttpGet("get/name")]
        [HttpPost("get/nam")]
        public IActionResult GetName()
        {
            return Ok("nya-n");
        }
    }

[HttpGet("get/name")]の部分がルーティング属性になる。

PagesのURLをネストする

PagesのURLをネストしたりカスタムするには、@pageに設定する。
about/policyを発行する例。

@page "about/policy"

...

まとめ(感想文)

これで自由にURLを設定できる予感。