【ASP.NET Core Web】コントローラーやアクションのURLをネストしたりカスタムしたりする
2023-9-14 |  .NET, ASP.NET Core
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を設定できる予感。
