0

使用 MVC4,假设您有一个自定义验证实体模型,是否可以将模型传递给自定义验证属性,例如:

public class ValidatableModel
{
    [CustomValidation(typeof(CustomDependentValidation), "ValidateCDV", **this**)]
    public string Attrib1 { get; set; ]
    public string Attrib2 { get; set; }
}

到声明如下的 CustomDependentValidation 类:

public class CustomDependentValidation : ValidationAttribute
{
    public static ValidationResult ValidateCDV(ValidatedModel argValMod) //yes, ?-able.
    { if (argValMod.Attrib1 == argValMod.Attrib2) { return ValidationResult.Success; } }
}

在上面的代码中是来自 CustomValidation msdn 页面示例的外推尝试:http: //msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute (v=vs.95).aspx

(关于 Silverlight 版本,我知道......其他版本页面没有任何示例代码)

在 MVC4 中,我试图编写的自我引用验证模型类似于模式的东西是不可能的吗?

我想这可能是因为注释不允许对象实例引用或者实体模型对象没有任何作为客户端的业务,但我还在学习 MVC 并且很容易失去业务端。

4

2 回答 2

0

后来我在SO上发现了一些类似的问题解决方法:

使用数据注释的依赖属性的自定义模型验证

属性级验证错误阻碍了类级验证的验证

简短的回答似乎是不可能的。

答案大小的答案是:这不在 MVC4 框中,但如果有足够的工作时间,这似乎是可能的

于 2013-09-21T20:58:09.093 回答
0

在您的自定义验证属性中覆盖 IsValid 方法,如下所示:

protected override ValidationResult IsValid(object value, ValidationContext validationContext)

validationContext 包含属性 ObjectInstance 和 ObjectType。第一个是您的实体,第二个是实体类型。这应该使您可以访问您需要验证的实体中的任何其他属性(我认为 - 我自己发现了它,所以如果没有,我会告诉你..)

于 2018-06-26T09:44:46.163 回答