2017-10-16 102 views
0

我有一個post方法,參數School每次調用時都是空的。我一定要發送正確的數據,我使用Postman,但是當我用斷點檢查它時,我得到一個空對象。爲什麼我的發佈方法沒有收到它發送的數據?

我與郵差派:

{ 
    "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。然而,在這種情況下,因爲你只有一個屬性,我只是用這個:

public IActionResult Post([FromBody]string name) 
相關問題