【发布时间】:2019-05-14 16:24:42
【问题描述】:
我有一个已初始化 dto 的 ViewModel。我想从邮递员发送 json 对象及其值,但 c# 对象不能取值并设置为 null。我该怎么做?
public class RegisterUserVm
{
public UserDto User { get; set; }
public RegisterUserVm()
{
User = new UserDto();
}
}
public class UserDto
{
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string Email { get; set; }
public string Telephone { get; set; }
public string Password { get; set; }
}
[HttpPost]
[Route("RegisterUser")]
public async Task<ActionResult<UserDto>> RegisterUser([FromBody] RegisterUserVm vm)
{
var registeredUser = await userBusiness.RegisterUser(new RegisterUserCommand
{
User = vm.User
});
return registeredUser.Result;
}
【问题讨论】:
-
您混淆了请求和视图模型类。该操作的输入 是请求DTO。 return 值将是 ViewModel。除非
RegisterUser返回Task<Task<UserDto>>,否则您的代码甚至都不会运行,因为registeredUser应该已经是UserDto -
你必须post你在Postman中使用的请求,否则无法猜测出什么问题。几乎可以肯定,主体与
RegisterUserVm类不匹配,即它不是单个对象,其单个User属性包含与UserDto 匹配的对象。可能缺少字段,或者正文是带引号的字符串而不是 JSON 字符串 -
我明白了。我使用 Postman 发布请求。我将更改视图模型。
-
你能更新一下你在邮递员中提交数据的方式吗?
标签: json asp.net-core asp.net-core-webapi