C# 如何使验证注释成为可选的?Asp.net内核

C# 如何使验证注释成为可选的?Asp.net内核,c#,asp.net-core,C#,Asp.net Core,我需要构建一组定制的验证注释,其中一些被认为是对已经存在的注释的扩展,而另一些则被认为是完全虚构的 因此,如果可能的话,请为我提供好的资源来学习如何[1]扩展或/和[2]发明注释 基本上,我需要有关如何使[必需]注释可选的帮助?我需要将其扩展为类似于[必需(参数)],这样我就可以通过某种方式将值传递给模型,以确定参数是真是假。因此,我可以控制注释,如果我这次是否需要应用它 因此,我可以通过某种方式将值传递给模型,以确定参数 真假 您可以选择设置自定义模型验证来完成它,这是官方的 下面是我的演示,

我需要构建一组定制的验证注释,其中一些被认为是对已经存在的注释的扩展,而另一些则被认为是完全虚构的

因此,如果可能的话,请为我提供好的资源来学习如何[1]扩展或/和[2]发明注释

基本上,我需要有关如何使
[必需]
注释可选的帮助?我需要将其扩展为类似于
[必需(参数)]
,这样我就可以通过某种方式将值传递给模型,以确定参数是真是假。因此,我可以控制注释,如果我这次是否需要应用它

因此,我可以通过某种方式将值传递给模型,以确定参数 真假

您可以选择设置自定义模型验证来完成它,这是官方的

下面是我的演示,希望能对你有所帮助

验证类别:

public class RequiredExAttribute : ValidationAttribute
    {
        public string IsFalse { get; set; }
        public string GetErrorMessage() => "Not this name";
        public RequiredExAttribute(string name)
        {
            IsFalse = name;
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value.ToString() == IsFalse)
            {
                return new ValidationResult(GetErrorMessage());
            }
            else return ValidationResult.Success;
        }
}
控制器:

public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Index(JobApplication jobApplication)
        {
                return View();
        }
型号:

public class JobApplication 
    {
        [RequiredEx("Tsai")]
        public string Name { get; set; }      
    }
视图:

@模型作业应用程序
提交申请
.输入验证错误{
边框颜色:红色;
}
@节脚本{
@{wait Html.RenderPartialAsync(“_validationScript”);}
}
结果:

因此,我可以通过某种方式将值传递给模型,以确定参数 真假

您可以选择设置自定义模型验证来完成它,这是官方的

下面是我的演示,希望能对你有所帮助

验证类别:

public class RequiredExAttribute : ValidationAttribute
    {
        public string IsFalse { get; set; }
        public string GetErrorMessage() => "Not this name";
        public RequiredExAttribute(string name)
        {
            IsFalse = name;
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value.ToString() == IsFalse)
            {
                return new ValidationResult(GetErrorMessage());
            }
            else return ValidationResult.Success;
        }
}
控制器:

public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Index(JobApplication jobApplication)
        {
                return View();
        }
型号:

public class JobApplication 
    {
        [RequiredEx("Tsai")]
        public string Name { get; set; }      
    }
视图:

@模型作业应用程序
提交申请
.输入验证错误{
边框颜色:红色;
}
@节脚本{
@{wait Html.RenderPartialAsync(“_validationScript”);}
}
结果:


我不认为标准的
[必需的]
注释会允许这样的事情-但是你可以随时编写自己的自定义数据注释进行验证-例如,作为一个起点-或者只是在谷歌上搜索“C#编写自定义数据注释”-你会得到大量的链接,我不认为标准的
[必需的]
annotation将允许类似的操作—但您始终可以编写自己的自定义数据批注进行验证—例如,作为起点—或者只需在谷歌上搜索“C#编写自定义数据批注”—您将获得大量链接