I have an extended class of RequiredAttribute that doesn't send error messages back. If I check it in the debugger the text is there alright.
public class VierRequired : RequiredAttribute
{
public VierRequired(string controlName)
{
//...
}
public string VierErrorMessage
{
get { return ErrorMessage; }
set { ErrorMessage = value; }
}
// validate true if there is any data at all in the object
public override bool IsValid(object value)
{
if (value != null && !string.IsNullOrEmpty(value.ToString()))
return true;
return false; // base.IsValid(value);
}
}
I call it like this
[VierRequired("FirstName", VierErrorMessage = "Please enter your first name")]
public string FirstName { get; set; }
And the mvc-view
<%: Html.TextBoxFor(model => model.FirstName, new { @class = "formField textBox" })%>
<%: Html.ValidationMessageFor(model => model.FirstName)%>
It works if I use the normal Required annotation
[Required(ErrorMessage = "Please enter your name")]
public string FirstName { get; set; }
But the custom does not send any error message back
I also had a problem with client side validation when I created my own derivative of the RequiredAttribute
. To fix it you need to register your data annotation like so:
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(VierRequired),
typeof(RequiredAttributeAdapter));
Simply call this in your Application_Start()
method and client side validation should work as normal.
If your attribute is not working when you are POST-ing your form then this would indicate to me that there is something wrong with the logic in your attribute (check you IsValid
method).
I am also not sure what you are trying to achieve with your derived data annotation; your logic looks like it is trying to do pretty much what the default attribute does anyway:
Taken from the MSDN documentation:
A validation exception is raised if the property is null, contains an empty string (""), or contains only white-space characters.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With