![](/img/trans.png)
[英]how to pass a argument with HTTP get method in .net core web api?
[英]Argument is null in call to .NET Web API GET method
我有兩個類似的Web API控制器,一個工作,另一個不工作。 找不到為什么壞了的不工作。 發生的情況是輸入參數的所有字段均為空。 這是控制器方法簽名:
public IEnumerable<Product> GetProducts([FromUri] StateQuery query)
參數類型:
public class StateQuery
{
public State state;
public string username;
public string password;
}
路由:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "Default",
routeTemplate: "api/{controller}/{action}"
);
調用端點:
var uri = 'api/product/';
var query = {
username: $("#user").val(),
password: $("#password").val(),
state: { "name": $("#state").val(), "Counties": [{ "Name": $("#county").val() }] }
};
$.getJSON(uri + 'getProducts', query)
.done(function (data) {
$('#product').text(data);
console.log(data);
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
這是一個示例請求:
http://localhost:47503/api/product/getProducts?username=auser&password=apassword&state%5Bname%5D=CO&state%5BCounties%5D%5B0%5D%5BName%5D=Boulder
我嘗試了屬性路由,嘗試從瀏覽器地址欄調用,嘗試將輸入簡化為僅用戶名和密碼,沒有任何更改。 query
所有字段始終為空。 我還嘗試將其更改為返回IHttpActionResult
,這是它與工作控制器之間的主要區別(當然不是它的作用),但這沒有效果。 該方法被調用,因此路由正常工作,但是參數綁定存在一些問題,而我只是沒有看到。
是否有人看到問題或只是一個方向? 我整個上午都在閱讀教程和SO問題,而我所看到的一切都表明我處在正確的軌道上。 也許我錯過了一些小東西,因為我盯着它太久了。
默認情況下,ASP.NET Web API使用的Json.NET在屬性而不是字段上起作用。 您應該將它們轉換為using屬性。
public class StateQuery
{
public State state { get; set; }
public string username { get; set; }
public string password { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.