【问题标题】:C# MVC/API Custom Validation Trigger - One Field OnlyC# MVC/API 自定义验证触发器 - 仅一个字段
【发布时间】:2022-10-05 07:55:10
【问题描述】:

我有一个 API 模型字段,我希望通过任何可能的方法对其进行自定义验证。

我需要的解决方案是:在该特定字段的模型状态验证失败 - 我想运行自定义代码来修改该字段的值。


由于代码库,我正在处理一些限制:

验证触发代码必须在模型内部或以某种方式绑定到它。

为整个模型创建自定义验证器对我来说是不合理的。

我将代码放在!modelstate.valid 的控制器中是不合理的

【问题讨论】:

  • 我找到了解决方案,我将在完成工作后立即发布答案。

标签: c# asp.net-mvc api asp.net-web-api web-applications


【解决方案1】:

我的问题是我认为您不能将注释与自定义验证混合和匹配。你可以。

让你的类继承 IValidatableObject

public class MyClass : IValidateableObject
{
}

添加验证方法 - “FieldName”是您正在验证的类变量

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
     if(your_condition_is_invalid)
     {
          yield return new ValidationResult(errorMessage: "your error message", memberNames: new[] { "FieldName" } 
     }
}

以下不适用于此问题,但我认为包括在内。

不利的一面是,据我询问的人说,如果您使用的是 web 应用程序,则在某些情况下您需要编写自定义前端验证。

它不会自动与默认的 mvc 前端验证/jquery 不显眼地啮合。

如果您打算为具有严格前端验证标准的应用程序执行此操作,那么请准备好为该字段编写验证器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多