I have a model classes that has a description property with a data annotation attribute of StringLength and length is set to 100 characters. When this property is more than 100
Create a view model that doesn't have a data annotation for the length, then you can map it to the entity model and truncate the value if it's longer than 100.
You could always check the attribute value using reflection, though that approach is not the best if you can get around it - it's not pretty:
var attribute = typeof(ModelClass).GetProperties()
.Where(p => p.Name == "Description")
.Single()
.GetCustomAttributes(typeof(StringLengthAttribute), true)
.Single() as StringLengthAttribute;
Console.WriteLine("Maximum Length: {0}", attribute.MaximumLength);
Why all the hassle? Why not
private string _description = string.Empty;
[StringLength(100, ErrorMessage = "Description Max Length is 100")]
public string Description
{
get { return _description; }
set { _description = value.Substring(0,100); }; // or something equivalent
}