在.NET Core MVC中使用嵌套路線尋找最佳實踐。NETCORE MVC - 如何使用嵌套的多參數化路線
比方說CampusController.cs
作品與基本型號:
[Route("api/campus/")]
public class CampusController : Controller
{
...
[HttpGet]
[Route("{campusId}")]
public IActionResult GetCampusInfo ([FromQuery]int campusId) { ... }
}
而且BuildingController.cs
作品與兒童模式:
[Route("api/campus/{campusId}/building")]
public class BuildingController : Controller
{
...
[HttpGet]
[Route("{buildingId}")]
public IActionResult GetBuilding ([FromQuery]int buildingId) { ... }
[Route("{buildingId}/")]
public IActionResult GetBuilding ([FromQuery]int buildingId) { ... }
....
(more Action Methods)
}
如果buildingId
直接映射到它可以檢索,即使提供campusId
數據庫不是父母。爲了在撥打/api/campus/{campusId}/building/{buildingId}
時保持URL清潔,我想驗證{campusId}
並返回一個4xx編碼的IActionResult(如果它無效)。在BuildingController
中的每個操作方法中都必須有一個比驗證邏輯更好的方法。
- 有沒有辦法在不同的控制器上級聯多個Action方法?因此,
CampusController
上的驗證方法將首先被調用,然後調用BuildingController
上的方法? - 有沒有辦法讓控制器級別的驗證
campusId
可能會短路並在驗證失敗時返回ActionResult?
編輯:當我指的驗證邏輯我的意思是API信號;而不是實際確定campusId是否有效的業務邏輯。
在此先感謝!
這個解決方案對我來說最重要,因爲整個'campus'模型不需要在'BuildingController'類中;而只需要執行一個簡單的驗證檢查。謝謝! –
爲什麼不使用FromRoute而不是FromQuery? – 000
@Sam'FromRoute'是正確的。我剛從OP複製了參數。這是我的一個疏忽。將更新。謝謝你指出。 – Nkosi