【问题标题】:How to send Json Object to ViewModel in .Net Core Rest api如何在 .Net Core Rest api 中将 Json 对象发送到 ViewModel
【发布时间】: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&lt;Task&lt;UserDto&gt;&gt;,否则您的代码甚至都不会运行,因为registeredUser 应该已经是UserDto
  • 你必须post你在Postman中使用的请求,否则无法猜测出什么问题。几乎可以肯定,主体与RegisterUserVm 类不匹配,即它不是单个对象,其单个User 属性包含与UserDto 匹配的对象。可能缺少字段,或者正文是带引号的字符串而不是 JSON 字符串
  • 我明白了。我使用 Postman 发布请求。我将更改视图模型。
  • 你能更新一下你在邮递员中提交数据的方式吗?

标签: json asp.net-core asp.net-core-webapi


【解决方案1】:
[HttpPost]
[Route("RegisterUser")]
public async Task<IActionResult> RegisterUser([FromBody] RegisterUserVm vm)
{
   var registeredUser = await userBusiness.RegisterUser(new RegisterUserCommand
                {
                    User = vm.User
                });

                var resultModel = registeredUser.Result.ToResultModel();
                return Ok(resultModel);

}

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多