C# 验证视图模型在api中是否仅通过fluent api传递一次

C# 验证视图模型在api中是否仅通过fluent api传递一次,c#,validation,asp.net-core,fluentvalidation,C#,Validation,Asp.net Core,Fluentvalidation,我正在使用Fluent API验证API中的有效负载。Street Address/MailingAddress/Lockbox Address是域模型中的三个不同属性。我想在验证中确保街道地址和邮寄地址只传递一次 正确有效载荷 { "id" :123, "name":"test", "streetAddress": { "city":"London", "address":"q23" }, "MailingAddress": { "city":"NewYork", "address":"q24

我正在使用Fluent API验证API中的有效负载。Street Address/MailingAddress/Lockbox Address是域模型中的三个不同属性。我想在验证中确保街道地址和邮寄地址只传递一次

正确有效载荷

{
"id" :123,
"name":"test",
"streetAddress": {
"city":"London",
"address":"q23"
},
"MailingAddress": {
"city":"NewYork",
"address":"q2453"
},
"LockBoxAddress": {
"city":"Miami",
"address":"q23888"
}
}
{
"id" :123,
"name":"test",
"streetAddress": {
"city":"London",
"address":"q23"
},
"streetAddress": {
"city":"NewYork",
"address":"q2453"
}
}
域模型

public string id{get;set;}
public string name{get;set;}
public Address streetAddress{get;set;}
public Address MailingAddress{get;set;}
public Address LockboxAddress{get;set;}
不正确的有效载荷

{
"id" :123,
"name":"test",
"streetAddress": {
"city":"London",
"address":"q23"
},
"MailingAddress": {
"city":"NewYork",
"address":"q2453"
},
"LockBoxAddress": {
"city":"Miami",
"address":"q23888"
}
}
{
"id" :123,
"name":"test",
"streetAddress": {
"city":"London",
"address":"q23"
},
"streetAddress": {
"city":"NewYork",
"address":"q2453"
}
}
我希望上面的有效载荷错误地指出,您不能传递多个街道地址,我使用的是Fluent API

RuleFor(x => x.streetAddress).Count(x =>x < 2).When(x => x.streetAddress!= null); 
Fluent API

RuleFor(x => x.streetAddress).Count(x =>x < 2).When(x => x.streetAddress!= null); 
RuleFor(x=>x.streetAddress).Count(x=>x<2).When(x=>x.streetAddress!=null);
没有属性可获取模型的计数。有什么想法吗


  • 您无法通过Fluent验证API进行验证。因为在有效负载反序列化之后,域模型中只有一个
    streetAddress
    属性。另一方面,您的代码
    RuleFor(x=>x.streetAddress)
    返回
    irulebuilderininitial
    而不是
    irulebuilderininitial。首先,为什么JSON字符串/对象中会有重复的键?请参阅您使用的是asp.net-core还是asp.net?@Jota.Toledo.net core