2017-10-16 17 views
0

私はpostメソッドを持っていますが、パラメータSchoolは呼び出されるたびに常にnullです。適切なデータを確実に送信するようにします。私はPostmanを使用していますが、ブレークポイントを調べると、nullオブジェクトが返されます。私は郵便配達で送る何投稿メソッドが送信されたデータを受信しないのはなぜですか?

{ 
    "Id": "", 
    "Name": "Test" 
} 

コントローラー:

[HttpPost] 
public IActionResult Post([FromBody] School school) 
{ 
    try 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(); 
     } 

     var schoolData = Mapper.Map<School, Data.School>(school); 

     var schoolModel = _schoolRepository.AddSchool(schoolData); 

     return CreatedAtRoute("GetSchool", new { id = schoolModel }, schoolModel); 
    } 
    catch (Exception e) 
    { 
     return LogException(e); 
    } 
} 

モデル:

public class School 
{ 
    public Guid Id { get; set; } 
    [Required(ErrorMessage = "Name is required")] 
    public string Name { get; set; } 
    public IEnumerable<Teacher> Teachers { get; set; } 
    public IEnumerable<Class> Classes { get; set; } 
} 
+1

問題は '' ''は有効な '' Guid' 'ではないということです。あなたは 'Id'を送信したくない場合は、 –

+0

を結合モデルから除外@CamiloTerevintoええ、あなたが正しい、私はちょうど「ID」には必須の属性が存在しないので、それはちょうどそれが通過させなければならないと思いました。これを回答として追加して、それに気をつけることができます –

答えて

1

問題は、あなたのモデルがGuidを必要とすることで、あなたがempty stringを送信しています:

"Id": "" 

Id[Required]ではないにもかかわらず、モデルはまだデータを解析できません。ただし、これをバインディングから除外することができます:

public IActionResult Post([FromBody][Bind(Include = nameof(School.Name))] School school) 

または、より良いオプションは、ViewModelを使用することです。しかし、この場合、1つのプロパティしか持たないので、私はちょうどこれを使うでしょう:

public IActionResult Post([FromBody]string name) 
関連する問題