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

如何验证 ASP.NET MVC 中多个属性的组合长度?

DDD
DDD原创
2025-01-16 19:37:11825浏览

How to Validate Combined Length of Multiple Properties in ASP.NET MVC?

使用数据注解实现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 < this.MinLength)
        {
            return new ValidationResult(this.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>

通过此设置,如果Foo、Bar和Baz属性的组合长度小于指定的最小长度,则模型验证将失败并显示在属性中定义的错误消息。 代码中添加了空值处理,避免因属性值为null引发异常。 错误信息也进行了更友好的本地化处理。

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

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