- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在尝试确定哪个 ValidationAttribute 返回了特定的 ModelError 时遇到了问题。我的网络 API 中有一个端点,它采用以下模型;
public class MyClass
{
[Required]
[Range(0, 3)]
public int? Number { get; set; }
[Required]
[Range(0, 3)]
public int? NumberTwo { get; set; }
}
和一个过滤器来检查 ModelState 是否有效;
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
IEnumerable<ModelError> errors = actionContext.ModelState.Values.SelectMany(s => s.Errors);
// ...
}
}
}
我看到 ModelError 有两个属性; ErrorMessage 是string 类型,Exception 是Exception 类型。我想要一种强类型的方法来确定哪个 ValidationAttribute [Required] 或 [Range(0, 3)] 返回错误响应而不进行字符串操作。有没有办法使用我不熟悉的这些属性返回自定义属性?
如果客户要发布一个模型,例如
{
"NumberTwo":10
}
最终目标是从 API 产生如下响应;
{
"supportCode" : "1234567890",
"errors" : [{
"code" : "Missing",
"message" : "The Number field is required."
}, {
"code" : "Invalid",
"message" : "The field NumberTwo must be between 0 and 3."
}]
}
最佳答案
如果您编写自己的验证例程而不是使用 MVC 中内置的验证例程,这是可能的。您需要对每个属性使用反射,然后对每个属性的每个验证属性使用反射。
关于c# - 如何确定哪个 ValidationAttribute 返回了 ModelError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32526578/
我正在尝试编写自己的 ValidationAttribute,我想将我的类的参数值传递给 ValidationAttribute。很简单,如果 bool 属性为 true,则顶部带有 Validati
我正在尝试编写自己的 ValidationAttribute,我想将我的类的参数值传递给 ValidationAttribute。很简单,如果 bool 属性为 true,则顶部带有 Validati
我有一个自定义的 ValidationAttribute,它检查另一个用户是否已经存在。为此,它需要访问我的数据访问层,一个由 Unity 注入(inject)我的 Controller 的实例 我如
我用以下内容装饰了一个类: [Required(ErrorMessage = "Price is required.")] public decimal Price { get; set; } 但是当
我创建了一个派生自 ValidationAttribute 的自定义验证器。我的理解是,它将生成足够的元数据供客户端脚本自动验证(使用 jquery.validate)。自定义验证器在服务器端工作正常
我有一个名为 [DateOfBirth] 的自定义 MVC 验证属性 - 它在模型中的使用如下: [DateOfBirth("DOBMinimumAgeValidation", 18, 100, Er
我的模型包含一些成员: public class Address { public Street { get; set;} public City { get; set; } pub
我有这个用于验证集合的自定义验证属性。我需要调整它以使用 IEnumerable。我尝试使该属性成为通用属性,但您不能拥有通用属性。 [AttributeUsage(AttributeTargets.
我有这样一个模型: [IsValidInput] public class Input { //different properties } 使用这样的自定义验证属性: [AttributeU
public class UniqueNameAttribute : ValidationAttribute { private const string UniqueNameViolatio
我尝试创建自定义 ValidationAttribute: public class RollType : ValidationAttribute { public override bool
我创建了一个自定义的 ValidationAttribute 类来检查我的应用程序中某个人的年龄: public class MinimumAgeAttribute : ValidationAttri
我构建了一个简单的日期检查来验证表单中的日期是否小于当前日期。 ValidationAttribute public class DateIsValidAttribute : ValidationAt
我在测试自定义验证属性时遇到了一些麻烦。由于方法签名是 protected当我调用 IsValid在我的单元测试中,我无法传入 Mock对象,它正在调用基 virtual bool IsValid(o
我在尝试确定哪个 ValidationAttribute 返回了特定的 ModelError 时遇到了问题。我的网络 API 中有一个端点,它采用以下模型; public class MyClass
当我实现从 ValidationAttribute 类继承的自定义属性时,我总是覆盖 bool IsValid(object value)忽略原型(prototype)为 ValidationResu
我创建了一个在服务器和客户端之间共享的 ValidationAttribute。为了让验证属性在数据助手类中被引用时正确生成给客户端,我必须非常具体地说明我是如何构建它的。 我遇到的问题是,由于某种原
在 ASP.NET MVC 4 应用程序中,LocalPasswordModel 类(在 Models\AccountModels.cs 中)如下所示: public class LocalPassw
MVC2 附带了一个名为“PropertiesMustMatchAttribute”的验证属性的很好示例,它将比较两个字段以查看它们是否匹配。该属性的使用如下所示: [PropertiesMustMa
使用 .NET Framework 4.5,ValidationAttribute类现在有一个名为 RequiresValidationContext 的新 Boolean 属性. 我已经挖了很长时间
我是一名优秀的程序员,十分优秀!