Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证DTO';s_C#_Validation_Dto - Fatal编程技术网

C# 验证DTO';s

C# 验证DTO';s,c#,validation,dto,C#,Validation,Dto,我正在开发MVC中的三层体系结构,包括业务对象层、服务层和web层。 业务对象层包含DTO(数据传输对象)。 服务层处理DTO并包含业务逻辑。 我的一个DTO如下所示: public class InsertCompanyGroupDto { public InsertCompanyGroupDto() { this.CompanyGroupAddressDetails = new InsertAddressDto(); } public Ins

我正在开发MVC中的三层体系结构,包括业务对象层、服务层和web层。
业务对象层包含DTO(数据传输对象)。
服务层处理DTO并包含业务逻辑。
我的一个DTO如下所示:

 public class InsertCompanyGroupDto
{
    public InsertCompanyGroupDto()
    {
        this.CompanyGroupAddressDetails = new InsertAddressDto();
    }
    public InsertAddressDto CompanyGroupAddressDetails { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "The {0} is required.")]
    [StringLength(100, ErrorMessage = "The {0} can not exceed {1} characters long.")]
    public string CompanyGroupName { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "The {0} is required.")]
    [StringLength(200, ErrorMessage = "The {0} can not exceed {1} characters long.")]
    public string SiteUrl { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "The {0} is required.")]
    [StringLength(20, ErrorMessage = "The {0} can not exceed {1} characters long.")]
    public string UserNameTag { get; set; }
}
在这段代码中,我在Insert Company Group DTO中使用InsertAddressDto。
两者都有验证。请看一下插入地址DTO

public class InsertAddressDto
{
    [Min(1, ErrorMessage = "{0} should be minimum of {1}.")]
    [Required(ErrorMessage = "The {0} is required.")]
    public short AddressTypeId { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "The {0} is required.")]
    [StringLength(100, ErrorMessage = "The {0} can not exceed {1} characters long.")]
    public string Address1 { get; set; }

    [StringLength(100, ErrorMessage = "The {0} can not exceed {1} characters long.")]
    public string Address2 { get; set; }
}
从上面的代码中,我只将一个请求作为JSON传递,其中包含

{
“公司集团名称”:“CG5”,
“站点URL”:http://localhost:33570/MultiChoice5",
“UserNameTag”:“Aker1”,
“源代码”:“Test22”,
“页面页脚”:“test22”,
“CreatedById”:“1”,
“AddressTypeId”:“6”,
“地址1”:“测试1”,
“城镇”:“testt”,
“邮政编码”:“24234”,
“CountryId”:“1”,
CreatedById:“1”
}
我在DTO中使用以下代码进行验证

public IEnumerable Validate()
{
返回Validate(新的ValidationContext(this));
}
公共IEnumerable验证(ValidationContext ValidationContext)
{
var results=新列表();
TryValidateObject(this,validationContext,results,true);
返回结果;
}
我在DTO(公司集团和地址)中都使用此代码。
验证仅适用于InsertCompanyGRoupDTO,但不适用于InsertAddressDTO。
如何纠正此问题?

我需要知道如何同时验证两个DTO(一个在另一个内)?

这是
公共插入地址DTO CompanyGroupAddressDetails{get;set;}
上的
插入公司GroupDTO
可选吗?验证器只检查定义的ValidationAttributesNo的可能重复项。它不是可选的。