首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向Controller发送带有list的JSON

向Controller发送带有list的JSON
EN

Stack Overflow用户
提问于 2020-09-30 18:26:17
回答 1查看 125关注 0票数 1

我试图向我的控制器发送以下JSON:

代码语言:javascript
复制
 [
    {
    "collection": "col1",
    "uuid": [
          "11:22:33:44:55:66",
         "11:22:33:44:55:66"
        ]
    },
    {
        "collection": "test"
    }
 ]

每个对象“集合”都包含一个由uuid符号表示的字符串列表。

我的模型看起来是这样的:

代码语言:javascript
复制
public class DummyDeviceApiModel {

[Display(Name = "UUID")]
[StringLength(36)]
public List<string> uuid {get; set;}

[Display(Name = "Collection")]
public string collection {get; set;}


}

我的控制器是这样的:

代码语言:javascript
复制
public async Task<ActionResult<DummyDeviceModel>> PostCreateDummyDevice(List<DummyDeviceApiModel> ddpm)

当我只发送集合部分,但是UUID及其列表会产生问题:

无法将'System.Collections.Generic.List`1System.String‘类型的对象强制转换为“System.String”类型

知道我做错了什么吗?问题似乎是模型中的“第二个”清单。

谢谢斯蒂芬恩

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-30 18:41:29

[StringLength(36)]string类型的验证属性,而不是arrays of stringList<string>。该异常可能发生在幕后,因为它试图对您的属性进行validate,因为它是List<string>类型的。如果您想做我认为要做的事情,请在列表上创建一个自定义验证,以确保列表中只有小于或等于36长度的字符串,那么您需要在模型(类)上实现IValidatableObject,或者通过创建继承自ValidationAttribute的类来创建用于验证的自定义Validation Attribute。您可以在MSDN:(https://learn.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-3.1)上阅读有关如何实现此接口和/或创建自定义属性的更多信息。为了测试抛出异常的是否确实是StringLength属性,请在代码中注释掉特定的Validation Attribute,并查看它是否没有错误地运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64143655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档