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