iam doing this , not very convincing way but its working
demo class
public class User
{
[TitleCase]
public string FirstName { get; set; }
[TitleCase]
public string LastName { get; set; }
[UpperCase]
public string Salutation { get; set; }
[LowerCase]
public string Email { get; set; }
}
Writing Attribute for LowerCase, others can be written in the similar manner
public class LowerCaseAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
//try to modify text
try
{
validationContext
.ObjectType
.GetProperty(validationContext.MemberName)
.SetValue(validationContext.ObjectInstance, value.ToString().ToLower(), null);
}
catch (System.Exception)
{
}
//return null to make sure this attribute never say iam invalid
return null;
}
}
Not very elegant way as its actually implementing Validation attribute but it works