2016-10-17 3 views
0

В следующем фрагменте кода, объект ExpenseRecord всегда нуль, когда я делаю запрос POST с телом: {"id":null,"name":"Test","reason":"Flight","date":"01.10.2016","amount":10,"text":"Test"}Модель Binding не работает, если GUID является нулевым

[HttpPost] 
public IActionResult Post([FromBody]ExpenseRecord record) 
{ 
    try 
    { 
     this.repository.Create(record); 
     return this.Created($"api/expenses/{record.Id}", null); 
    } 
    catch (ArgumentNullException) 
    { 
     return this.BadRequest(); 
    } 
    catch (InvalidOperationException) 
    { 
     return new StatusCodeResult((int)HttpStatusCode.Conflict); 
    } 
} 

ExpenseRecord выглядит как:

public class ExpenseRecord : IEquatable<ExpenseRecord> 
{ 
    public Guid Id { get; set; } 

    public string Date { get; set; } 

    public string Name { get; set; } 

    [JsonConverter(typeof(StringEnumConverter))] 
    public ExpenseReason Reason { get; set; } 

    public decimal Amount { get; set; } 

    public string Text { get; set; } 

    ... 
} 

Если идентификатор установлен на соответствующий fomatted GUID, он работает. Однако при публикации новой записи я не могу (или, скорее, не хочу) предоставить идентификатор?

+0

Как вы сделали запрос POST? –

+0

Advanced Rest Клиент: POST/API/расходы HTTP/1.1 HOST: локальный: 57938 тип содержимого: приложения/JSON содержание длина: 89 { "ID": нулевой, "имя": "Тест" , «reason»: «Flight», «date»: «01.10.2016», «amount»: 10, «text»: «Test»} – Stefan

+0

'Guid' - это' struct', поэтому не может допускать нулевые значения. –

ответ

1

Как было сказано, руководство не может быть пустым.

// change 
public Guid Id { get; set; } 

// to 
public Guid? Id { get; set; } 

или отправить пустой Guid в вашем POST

Смежные вопросы