首页 >后端开发 >C++ >如何在 ASP.NET MVC 中实现组合属性长度的自定义验证?

如何在 ASP.NET MVC 中实现组合属性长度的自定义验证?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-16 19:32:11826浏览

How to Implement Custom Validation for Combined Property Length in ASP.NET MVC?

利用数据注解在ASP.NET MVC中实现组合属性长度的自定义验证

自定义验证属性在同时验证多个属性时提供了灵活性。在ASP.NET MVC中,您可以使用ValidationAttribute基类创建自定义验证属性,并使用[Validate]属性将它们应用于模型中的属性。

组合属性长度的自定义验证属性

要验证多个字符串属性的组合长度,您可以创建如下自定义验证属性:

<code class="language-csharp">public class CombinedMinLengthAttribute : ValidationAttribute
{
    public CombinedMinLengthAttribute(int minLength, params string[] propertyNames)
    {
        this.PropertyNames = propertyNames;
        this.MinLength = minLength;
    }

    public string[] PropertyNames { get; private set; }
    public int MinLength { get; private set; }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var properties = this.PropertyNames.Select(validationContext.ObjectType.GetProperty);
        var values = properties.Select(p => p.GetValue(validationContext.ObjectInstance, null)).OfType<string>();
        var totalLength = values.Sum(x => x.Length) + Convert.ToString(value).Length;

        if (totalLength < MinLength)
        {
            return new ValidationResult(ErrorMessageString);
        }

        return ValidationResult.Success;
    }
}</code>

在模型中的使用

要将此验证应用于您的模型,您可以使用[Validate]属性修饰其属性之一:

<code class="language-csharp">public class MyViewModel
{
    [CombinedMinLength(20, "Bar", "Baz", ErrorMessage = "Foo, Bar和Baz属性的组合最小长度应大于20")]
    public string Foo { get; set; }
    public string Bar { get; set; }
    public string Baz { get; set; }
}</code>

此验证属性确保Foo、Bar和Baz属性的组合长度大于或等于指定的最小长度(此示例中为20)。如果验证失败,则会在验证摘要中显示相应的错误消息(如ErrorMessage参数中定义)。

以上是如何在 ASP.NET MVC 中实现组合属性长度的自定义验证?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn