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

如何驗證 ASP.NET MVC 中多個屬性的組合長度?

DDD
發布: 2025-01-16 19:37:11
原創
822 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板