首頁 >後端開發 >C++ >如何在 ASP.NET MVC 中實作組合屬性長度的自訂驗證?

如何在 ASP.NET MVC 中實作組合屬性長度的自訂驗證?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-16 19:32:11823瀏覽

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