首页 > 后端开发 > C++ > 如何使用数据注释验证 ASP.NET MVC 中多个属性的组合长度?

如何使用数据注释验证 ASP.NET MVC 中多个属性的组合长度?

DDD
发布: 2025-01-16 19:26:10
原创
676 人浏览过

How to Validate the Combined Length of Multiple Properties in ASP.NET MVC using Data Annotations?

使用数据注解在 ASP.NET MVC 中验证多个属性的组合长度

在 ASP.NET MVC 中,使用 StringLength 注解验证单个属性的长度是一种常见做法。但是,在某些情况下,您需要验证多个属性的组合长度。本文探讨了使用数据注解实现此目标的符合 MVC 的方法。

自定义验证属性

要验证多个属性的组合长度,您可以创建一个自定义验证属性。这是一个示例:

<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 ?? 0) + (value?.ToString()?.Length ?? 0); //处理空值情况

        if (totalLength < MinLength)
        {
            return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
        }

        return ValidationResult.Success;
    }
}</code>
登录后复制

使用方法

要使用此自定义属性,您可以使用它来装饰视图模型中的属性:

<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>
登录后复制

当验证模型时,将调用自定义属性的 IsValid 方法,并且将指定属性的组合长度与已装饰属性的值一起针对指定的最小长度进行验证。 改进后的代码加入了空值处理,避免了潜在的 NullReferenceException

以上是如何使用数据注释验证 ASP.NET MVC 中多个属性的组合长度?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板