如何为wcf ria服务的元数据中的注释编写非零表达式?

时间:2013-04-25 19:41:21

标签: c# entity-framework-4 entity-framework-5 silverlight-5.0 wcf-ria-services

假设我有一个像:

这样的实体属性
public decimal Amount { get; set; }

然后可以在元数据类中添加验证,如:

[Range(0.01, double.MaxValue, ErrorMessage = "Amount is required")]
public decimal Amount { get; set; }

如何处理非零请求?

1 个答案:

答案 0 :(得分:2)

您可以实现自定义验证属性。例如:

class MyObject {
    [NonZero]
    public decimal Amount { get; set; }
}

public class NonZeroAttribute : ValidationAttribute
{
    public override string FormatErrorMessage(string name)
    {
        return string.Format("{0} must be non-zero", name);
    }

    public override bool IsValid(object value)
    {
        var zero = Convert.ChangeType(0, value.GetType());
        return !zero.Equals(value);
    }

    protected override ValidationResult IsValid(
        object value, ValidationContext validationContext)
    {
        if (IsValid(value))
            return new ValidationResult(null);
        else
            return new ValidationResult(
                FormatErrorMessage(validationContext.MemberName)
            );
    }
}