c# - 如何在 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 这个问题
解决方案
推荐阅读
- unity3d - Unity 的 text mesh pro 输入字段插入符号太宽,将文本推到 textarea 之外
- html - 视频控制按钮不工作和 CSS 不更新按钮
- swift - Swift Multiplayer 多次调用当前游戏
- python - 在 Python 中格式化输出文件
- java - 阅读 3 次考试。输出学生姓名、成绩、平均成绩和字母成绩。嵌套循环,
- css - 使用 CSS 忽略数据以进行页面布局
- android - 如何在 Kotlin for Android 中以编程方式每秒随机更改背景颜色
- java - 如何使用 Java 验证正确的 URL 格式?我无法理解逻辑
- spring - Spring ControllerAdvice 如何根据 Accept 请求头返回 Json 或 html 页面?
- java - 为什么 Todo 应用不显示添加的任务?