Web API 2.0嵌套List类模型如何调用并赋值ProductCode
解决Web API 2.0嵌套List模型的属性赋值问题
你当前的核心问题是:respon1本身并没有ProductCode属性,这个属性属于嵌套在Row列表里的ZHitung2m对象,所以直接访问respon1.ProductCode会报错。要操作这个属性,需要通过遍历Row列表中的每个元素来实现,完全不需要修改模型结构(也就不会破坏Postman的请求结构)。
修改后的控制器Post方法代码
[HttpPost] public HttpResponseMessage Post([FromBody] ZHitung1m respon1) { var variable1 = respon1.DistCode; if (variable1 == "anton") { respon1.DistCode = "budiman"; // 处理嵌套列表中的ProductCode属性 // 先判断Row是否为空,避免空引用异常 if (respon1.Row != null && respon1.Row.Any()) { foreach (var rowItem in respon1.Row) { // 示例1:统一修改所有ProductCode的值 rowItem.ProductCode = "updated_product_code"; // 示例2:根据原有值条件修改 // if (rowItem.ProductCode == "old_prod_01") // { // rowItem.ProductCode = "new_prod_01"; // } } } } return Request.CreateResponse(HttpStatusCode.OK, respon1); }
保持原有请求结构的说明
Postman中仍然可以使用原来的嵌套JSON结构发送请求,比如:
{ "DistCode": "anton", "Row": [ { "ProductCode": "prod_001" }, { "ProductCode": "prod_002" } ] }
模型结构完全没有改动,请求和响应的嵌套格式会和之前保持一致。
关键注意点
- 必须先判断
respon1.Row是否为null或者空列表,否则会触发NullReferenceException; - 遍历
Row列表时,每个rowItem就是ZHitung2m的实例,可以直接读写它的ProductCode属性。
内容的提问来源于stack exchange,提问作者anto
相关产品推荐
相关产品推荐

