我想獲取一個從此 Angular 打字稿前端代碼構建的端點 getPartNumbersFromManufacture(manufactureNameId : Number) { let parameter = new HttpParams().set("FKManufactureNameId", manufactureNameId.toString()) return this.http.get<ManufacturePartNumber[]>(this.manufactureUrl + '/PartNumber', {params: parameter}).pipe( tap(data => console.log('All: ' + JSON.stringify(data))), catchError(this.handleError) ); }這會產生如下所示的請求:Request URL: https://localhost:5001/api/Manufacture/PartNumber?FKManufactureNameId=14703Request Method: GETStatus Code: 200 OKRemote Address: [::1]:5001Referrer Policy: no-referrer-when-downgrade.netcore C# 代碼如下所示,端點被擊中,但ManufacturerNameID 始終=0,如果我嘗試將其更改為字符串,則它為空。 [Route("api/Manufacture")] public class ManufactureController : ControllerBase { ... [HttpGet("PartNumber/{FKManufactureNameId=manufactureNameID}")] public IEnumerable<Views.ManufacturePartNumber> PartNumbers(int manufactureNameID) //pass the manufacture id from the frontend and get the part numbers associated with this manufacturer { TrackingContext context = new TrackingContext(); IEnumerable<ManufacturePartNumber> manufacturePartNumbers = context.ManufacturePartNumber.Where(n => n.FkManufactureNameId == manufactureNameID); List<Views.ManufacturePartNumber> manufacturePartNumberView = new List<Views.ManufacturePartNumber>(); for (int i = 0; i < manufacturePartNumbers.Count(); i++) { manufacturePartNumberView.Add(new Views.ManufacturePartNumber(manufacturePartNumbers.ElementAt(i))); } return manufacturePartNumberView; } ...}我做錯了什么,我希望我的 C# 代碼處理這個具有等號的查詢參數,因為這似乎是“HttPClient”類在傳遞“HttpParams”對象時構建查詢參數的標準方式。我知道如何處理沒有“=”的情況,但我猜“=”是新的標準/最佳實踐?
1 回答

FFIVE
TA貢獻1797條經驗 獲得超6個贊
您的 api 聲明似乎不準確。
我相信這就是您想要做的:
[HttpGet("PartNumber")] /* <--- */ public IEnumerable<Views.ManufacturePartNumber> PartNumbers(/* --> */[FromQuery]int manufactureNameID) {...
您希望從QueryString中獲取參數,因此您可以使用[FromQuery]
參數旁邊的屬性來指示,例如:
[FromQuery]int manufactureNameID
此外,您的[HttpGet]
屬性不需要添加任何其他內容,但“方法路由”在本例中是 [HttpGet("PartNumber")]
- 1 回答
- 0 關注
- 136 瀏覽
添加回答
舉報
0/150
提交
取消