如何在asp.net中使自定义验证类通用(如果属性1为true,则需要属性2)

时间:2018-05-03 09:56:16

标签: c# asp.net asp.net-mvc asp.net-core customvalidator

我使用的是.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的这个问题

0 个答案:

没有答案