我尝试为我的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; }
}
这是我的要求:
这是我的结果:
答案 0 :(得分:1)
您需要为控制器参数指定[FromBody]
,以便框架可以正确绑定到模型。请参阅Model Binding in ASP.NET Core上的文档。
尝试:
[HttpPost]
public async Task<ActionResult<TViewModel>> Post([FromBody] TViewModel item)
{
// your code
}