This question has to have been asked before, but I think the search terms are too generic for me to find the answer I'm looking for, so I'll ask it again.
I have a model with an int
property, and a range annotation.
If the user enters something other than an int, the validation message responds with The value '<bad data>' is not valid for '<property name>'
... which is great, but I want to provide a bit more feedback, i.e., Expecting an integer value in this field.
.
Since this validation fails before the other validators take a look, I don't know how (or if it's possible) to override the default validator message for this.
What are my options?
per request, I am posting the code, but there's not a lot to it:
[Range(0,65535, ErrorMessage="Port must be between 0 and 65535.")]
public int Port { get; set; }
There is validation that occurs before it reaches the RangeAttribute. I want to replace the default message with one of my own choosing.
If you're using standard annotations, you should be able to override the error message with something like this:
[MyAnnotation(...., ErrorMessage = "My error message")]
public int myInt { get; set; }
Or do you actually want to append to the default error message instead of replacing it (not clear in question)?
Update: Misread -- suggest this as the answer: How to change the ErrorMessage for int model validation in ASP.NET MVC? or better yet How to change 'data-val-number' message validation in MVC while it is generated by @Html helper
You can also inherit IValidatableObject in your model class. You can write down your required logic in the Validate method. Please find sample code below.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models
{
public class Alok : IValidatableObject
{
[Display(Name = "Property1")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Property1 is required.")]
public int Property1 { get; set; }
[Display(Name = "Property2")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Property2 is required.")]
public int Property2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Property1 < Property2)
{
yield return new ValidationResult("Property 1 can't be less than Property 2.");
}
}
}
}
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