web-dev-qa-db-ja.com

Asp.netコアMVCポストパラメーターは常にnull

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を受け取ります。

18
Ravi Patel

これは、null値の処理方法が原因である可能性があります。 AddJsonOptionsでNullValueHandlingをIgnoreに設定し、それが機能するかどうかを確認します。

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddJsonOptions(jsonOptions=>
        {
            jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
        });
}
13
bvoleti

元のメソッドPost([FromBody] User newUser)に注意してください

Googleの将来の読者の場合、メソッドがPost(User newUser)の場合、この同じ問題が発生する可能性があります

[FromBody]lackに注意してください。これは、これらのパラメーターが一般的に推論されたMVCの以前のバージョンからの逸脱です。

既存のMVC5開発者で、AspNetCore.MVCに関するこのページを見つけた場合は、[FromBody]があることを必ず確認してください。必要に応じて装飾されています。

11
Chris Marisic

新しいASP.NET Coreプロジェクトを作成し、機能を追加しましたが、機能します。 githubで このプロジェクト をチェックしてください。

また、ブラウザコンソールからこのコントローラと簡単に通信できるログのスクリーンショットを参照してください。 コンソール出力

2
Roman Zinnatov

いる Microsoft.AspNetCore.Mvc 1.0.0

もしそうなら、このオブジェクトをあなたのボディとしてリクエストで送信してみてください(キャメルケースプロパティ):

{
   "name":"UserName",
   "gender":"Gender of the user",
   "phoneNumber":"PhoneNumber of the user"
}
0
steamrolla