Thursday, 22 August 2013

IsValid(object value, ValidationContext validationContext) is not called

IsValid(object value, ValidationContext validationContext) is not called

I wrote a custom attribute:
public class VerifyOrderAttribute : RequiredAttribute {
protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
{
if (DoesOrderExist((string)value))
return ValidationResult.Success;
ValidationResult vr = new ValidationResult("Order does not exist");
return vr;
//return base.IsValid(value, validationContext);
}
private bool DoesOrderExist(string sOrderSequence)
{
PullParts.PartProcessor o = new PullParts.PartProcessor();
bool result = o.CheckOrder(sOrderSequence);
return result;
}
}
I use VerifyOrder attribute with my property:
[Required(ErrorMessage= "Order number is required")]
[RegularExpression(@"\d{2}-\d{6}-\d{2}", ErrorMessage="Order number must
be in format XX-XXXXXX-XX")]
[VerifyOrder(ErrorMessage="Order number does not exist")]
public global::System.String OrderNumber
{
get
{
return _OrderNumber;
}
set
{
_OrderNumber = value;
}
}
private global::System.String _OrderNumber;
at my view, I called ValidationMessageFor():
<div >
<label class="span2" >*Order Number:</label>
@Html.TextBoxFor(x => x.Request.OrderNumber, new { @class = "span3" })
@Html.ValidationMessageFor(x => x.Request.OrderNumber)
</div>
it looks like ValidationMessageFor does not call IsValid() for my custom
attribute. I want my custom attribute VerifyOrder to work just like
Required attribute. What do I need to do?
thanks in advance.

No comments:

Post a Comment