【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を設定できる予感。
