Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
在ASP.NET MVC 2上绕过数据批注验证_Asp.net_Asp.net Mvc_Asp.net Mvc 2_Data Annotations - Fatal编程技术网

在ASP.NET MVC 2上绕过数据批注验证

在ASP.NET MVC 2上绕过数据批注验证,asp.net,asp.net-mvc,asp.net-mvc-2,data-annotations,Asp.net,Asp.net Mvc,Asp.net Mvc 2,Data Annotations,我想知道是否有可能绕过一个使用数据注释的属性的验证。由于我在多个页面上使用该模型,因此在某些页面中需要检查,但在其他页面中不需要检查,因此我希望忽略它 萨克斯 我认为这在数据注释中是不可能的。我知道Microsoft企业库验证应用程序块的概念是将规则集用于组验证。这允许您在多个规则集上验证对象,例如默认规则集和某些页面上的扩展规则集。数据注释没有类似规则集的内容 以下是使用VAB的示例: public class Subscriber { [NotNullValidator] [

我想知道是否有可能绕过一个使用数据注释的属性的验证。由于我在多个页面上使用该模型,因此在某些页面中需要检查,但在其他页面中不需要检查,因此我希望忽略它


萨克斯

我认为这在数据注释中是不可能的。我知道Microsoft企业库验证应用程序块的概念是将规则集用于组验证。这允许您在多个规则集上验证对象,例如默认规则集和某些页面上的扩展规则集。数据注释没有类似规则集的内容

以下是使用VAB的示例:

public class Subscriber
{
    [NotNullValidator]
    [StringLengthValidator(1,200)]
    public string Name { get; set; }

    [NotNullValidator(Ruleset="Persistence")]
    [EmailAddressValidator]
    public string EmailAddress { get; set; }
}

您可以使用FluentValidation,它用作外部验证器类。在本例中,您将为每个场景实现不同的验证器类

示例:

using FluentValidation;
public class CustomerValidator: AbstractValidator<Customer> {
    public CustomerValidator() {
        RuleFor(customer => customer.Surname).NotEmpty();
        RuleFor(customer => customer.Forename).NotEmpty()
            .WithMessage("Please specify a first name");
    }
}

public class CustomerValidator2: AbstractValidator<Customer> {
    public CustomerValidator() {
        RuleFor(customer => customer.Surname).NotEmpty();
    }
}

Customer customer = new Customer();

CustomerValidator validator = new CustomerValidator();
ValidationResult results = validator.Validate(customer);

CustomerValidator2 validator2 = new CustomerValidator2();
ValidationResult results2 = validator2.Validate(customer);

results would have 2 validation errors
results2 would have 1 validation error for the same customer
使用FluentValidation;
公共类CustomerValidator:AbstractValidator{
公共CustomerValidator(){
RuleFor(customer=>customer.姓氏).NotEmpty();
RuleFor(customer=>customer.Forename).NotEmpty()
.WithMessage(“请指定名字”);
}
}
公共类CustomerValidator2:AbstractValidator{
公共CustomerValidator(){
RuleFor(customer=>customer.姓氏).NotEmpty();
}
}
客户=新客户();
CustomerValidator validator=新CustomerValidator();
ValidationResult=validator.Validate(客户);
CustomerValidator2 validator2=新CustomerValidator2();
ValidationResult results2=validator2.验证(客户);
结果将有2个验证错误
结果2对于同一客户将有1个验证错误

不久前,我问了一些类似的问题——简短的回答是否定的。我最后不得不为它编写自己的验证系统。你也许可以编写自己的模型活页夹来处理它,但我从来没有抽出时间来处理它。。。。这就是为什么他们说应该为每个视图创建单独的视图模型;)