首頁 >後端開發 >C++ >如何使用資料註解驗證 ASP.NET MVC 中多個屬性的組合長度?

如何使用資料註解驗證 ASP.NET MVC 中多個屬性的組合長度?

DDD
DDD原創
2025-01-16 19:26:10681瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn