MVCコアは初めてです。
コントローラーを備えたMVCコアを使用してプロジェクトを作成しました。このコントローラーには、GetおよびPostアクションメソッドがあります。クエリ文字列を使用してGetメソッドにデータを渡すと正常に動作しますが、複雑なJSONをpostメソッドに渡すと、常にnullが表示されます。
ここで私がやっていること:
リクエストの投稿
URL: http://localhost:1001/api/users
Content-Type: application/json
Body:
{
"Name":"UserName",
"Gender":"Gender of the user",
"PhoneNumber":"PhoneNumber of the user"
}
こちらがポストアクションメソッドです
[HttpPost]
[Route("api/users")]
public async Task<IActionResult> Post([FromBody]User newUser)
{
...
}
投稿リクエストが呼び出されると、newUserは常にnullを表示します。そして、[FromBody]属性を削除すると、newUserオブジェクトを受け取りますが、そのフィールドはすべてnullです。
この問題で私を助けてください。
[〜#〜]編集済み[〜#〜]
ここに私のUserクラスがあります
public class User{
public int Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string PhoneNumber { get; set; }
}
説明と同じことを行いました here jsonデータについては、まだnullを受け取ります。
これは、null値の処理方法が原因である可能性があります。 AddJsonOptionsでNullValueHandlingをIgnoreに設定し、それが機能するかどうかを確認します。
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvc()
.AddJsonOptions(jsonOptions=>
{
jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});
}
元のメソッドPost([FromBody] User newUser)
に注意してください
Googleの将来の読者の場合、メソッドがPost(User newUser)
の場合、この同じ問題が発生する可能性があります
[FromBody]
のlackに注意してください。これは、これらのパラメーターが一般的に推論されたMVCの以前のバージョンからの逸脱です。
既存のMVC5開発者で、AspNetCore.MVCに関するこのページを見つけた場合は、[FromBody]
があることを必ず確認してください。必要に応じて装飾されています。
いる Microsoft.AspNetCore.Mvc 1.0.0
?
もしそうなら、このオブジェクトをあなたのボディとしてリクエストで送信してみてください(キャメルケースプロパティ):
{
"name":"UserName",
"gender":"Gender of the user",
"phoneNumber":"PhoneNumber of the user"
}