Asp.Net Core oData-发布请求的所有属性为null

时间:2019-03-18 19:50:53

标签: c# post asp.net-core odata

我尝试为我的Asp.Net核心项目设置一个oData控制器。

Get/GetSingle/Delete/Patch的魅力十足。

但是我的帖子请求我的传入模型始终将所有属性设置为null。

我正在使用Asp.Net.Core 2.2和oData 7.1

public async Task<ActionResult<TViewModel>> Post(TViewModel item)
{           
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    try
    {
        var addedEntity = await _manager.AddAsync(_mapper.Map<TModel>(item));
        return Ok(_mapper.Map<TViewModel>(addedEntity));
    }
    catch (CreateException)
    {
        return BadRequest();
    }
}

那是我的模特:

public class UserViewModel : IViewModel
{
    public Guid? Id { get; set; }
    public string SecurityStamp { get; set; }

    public Gender? Gender { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string PhoneNumber { get; set; }

    public IEnumerable<string> Roles { get; set; }
}

这是我的要求:

enter image description here

这是我的结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要为控制器参数指定[FromBody],以便框架可以正确绑定到模型。请参阅Model Binding in ASP.NET Core上的文档。

尝试:

[HttpPost]
public async Task<ActionResult<TViewModel>> Post([FromBody] TViewModel item)
{
    // your code
}