【问题标题】:Jsonconvert Deserializeobject max length property not workingJsonconvert Deserializeobject 最大长度属性不起作用
【发布时间】:2021-10-12 12:05:51
【问题描述】:

我使用的是dot net core 3.1,streamreader读取req body为

string requestBody = await new StreamReader(req.Body).ReadToEndAsync();

然后将请求正文转换为所需的模型为

var response = JsonConvert.DeserializeObject<MyModel>(requestBody);

MyModel 类:

public class MyModel
{
    [Required]
    [MaxLength(50)]
    public string Name { get; set; }
}

但是 maxlength 属性在这里不起作用,它只是获取任意长度的字符串值。

【问题讨论】:

    标签: .net asp.net-core annotations


    【解决方案1】:

    反序列化期间不使用 MaxLength 属性。它不会验证此字段包含少于 50 个字符并引发异常或修剪字符串。

    如果你想验证这个,你必须反序列化这个 json 并添加你的自定义验证。

    您可以使用this method 获取属性,然后实现您自己的逻辑。

    如果您只想使用您提供的属性验证您的 MyModel 实例,请查看 IValidatableObject。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多