如何分配嵌套在 Web API 2.0 中的 LIST 类模型

How to assign LIST class models Nested in Web API 2.0

提问人:anto 提问时间:9/23/2023 最后编辑:Brian Tompsett - 汤莱恩anto 更新时间:9/23/2023 访问量:39

问:

我需要帮助来分配列表嵌套的 Web Api 2.0:

public HttpResponseMessage Post([FromBody] ZHitung1m respon1)

到目前为止,我的代码只能分配头等模型

我可以分配和呼叫,但不知何故我不能分配和呼叫
= respon1.DistCode= respon1.ProductCode

这里是我的模型类 WEB Api:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


namespace WebAPI.Models
{
    public class ZHitung1m
    {
        public string DistCode { get; set; }
        
        public List<ZHitung2m> Row { get; set; }

        public class ZHitung2m
        {
            public string ProductCode { get; set; }
        }

    }
}

这是我的 API 控制器use HttpResponseMessage Post =

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI.Models;

namespace WebAPI.Controllers
{
    public class Zhitung1Controller : ApiController
    {

        [HttpPost]
        public HttpResponseMessage Post([FromBody] ZHitung1m respon1)
        {

            var variable1 = respon1.DistCode;

            if (variable1 == "anton")
            {
                respon1.DistCode = "budiman";
            }

            return Request.CreateResponse(HttpStatusCode.OK, respon1);

        }
        }
}

到目前为止,我只能分配()如何调用和分配()
respon1.DistCoderespon1.ProductCode

在不更改我的 POSTMAN 中的嵌套结构的情况下, 这是我的邮递员结果:want keep nested structure like this

  1. 有人知道打电话和分配()吗? 到目前为止,我尝试了respon1.ProductCode
public class ZHitung2m : ZHitung1m
{
    public string ProductCode { get; set; }
}

它的变化和我想要的邮递员结构。

2.

 public class ZHitung1m : ZHitung2m
 {
     public string DistCode { get; set; }
     
     public List<ZHitung2m> Row { get; set; }

 }
 public class ZHitung2m
 {
     public string ProductCode { get; set; }
 }

使用此类模型代码,可以调用 assign () 但也改变和打破了我想要的邮递员结构:respon1.ProductCode

postman2

C# 嵌套 邮递员 ASP.NET-WEB-API2

评论

0赞 jdweng 9/23/2023
可以更改发送端吗?请参见 : learn.microsoft.com/en-us/aspnet/web-api/overview/...

答:

0赞 David House 9/23/2023 #1

让你的模型相互继承似乎根本不是你想做的,因为它们代表了不同的概念,即 包含一个列表,如果你从另一个继承一个,你说是一个类型,反之亦然。ZHitung1mZHitung2mZHitung1mZHitung2m

所以不需要继承......然后尝试以下操作(将变量名称更改为描述性名称):

namespace WebAPI.Controllers
{
    public class Zhitung1Controller : ApiController
    {

        [HttpPost]
        public HttpResponseMessage Post([FromBody] ZHitung1m respon1)
        {

            var variable1 = respon1.DistCode;

            if (variable1 == "anton")
            {
                respon1.DistCode = "budiman";
            }

            foreach(var row in respon1.Row)
            {
                var variable2 = row.ProductCode;

                ... do something with variable2 or row here ...
            }

            return Request.CreateResponse(HttpStatusCode.OK, respon1);

        }
    }
}

评论

1赞 anto 9/23/2023
非常感谢你,David House,你的答案是正确的,我尝试一下你的代码,我可以调用/分配列表嵌套(行。产品代码)