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