首页 > 解决方案 > 如何在 asp.net 中使自定义验证类通用(如果属性 1 为真,则需要属性 2)

问题描述

我正在使用 .NET Core 并在视图模型中有以下代码:

public bool IsLocalArrangement { get; set; }
[RequiredIfLocalArrangements]
public string LocalArrangementDetail { get; set; }

为了使此注释起作用,我创建了一个新类,并具有以下代码:

using System.ComponentModel.DataAnnotations;
using MyProject.ViewModels;

namespace MyProject.Validation
{
    public class RequiredIfLocalArrangements : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, 
                                                    ValidationContext validationContext)
        {
            var vm = (ArrangementsViewModel)validationContext.ObjectInstance;

            return string.IsNullOrEmpty((string)value) && vm.IsLocalArrangement ?
                new ValidationResult("Please provide details for the local arrangement(s)")
                    : ValidationResult.Success;
        }
    }

}

但是这种情况经常出现,我现在将所有这些代码复制到新类(RequiredIfOwnsVehicle 等),其中我需要更改的唯一变量是视图模型名称,视图模型中的布尔属性它取决于,以及验证结果消息。

我怎样才能使这个通用?

编辑:在尝试从 github 探索万无一失的项目时,我遇到了 System.Web.Mvc 这个问题

标签: c#asp.netasp.net-mvcasp.net-corecustomvalidator

解决方案


推荐阅读