public static UIData<string> Validate(this UIData<string> item, StringFormat format = StringFormat.Plain, string requiredMessage = "", int maxLength = 0, bool trim = true, int roundingDecimals = 0) { if (item == null) { item = new UIData<string>("", Types.String); } item.Value = item.Value ?? ""; bool isRequired = (requiredMessage.Length != 0); item.SubmittedValue = item.Value; if (item.TrueType == Types.Date) if (format != StringFormat.Date) { format = StringFormat.Date; } if (item.TrueType == Types.DateTime) if (format != StringFormat.DateTime) { format = StringFormat.DateTime; } if (format == StringFormat.TrueTypeDecimalPlain || format == StringFormat.TrueTypeDecimalMoney) item.TrueType = Types.Decimal; if (format == StringFormat.TrueTypeDouble) item.TrueType = Types.Double; if (format == StringFormat.TrueTypeInteger) item.TrueType = Types.Integer; switch (item.TrueType) { case Types.Integer: item.Value = item.Value.Replace("$", ""); if (item.Value.Length == 0) { item.Value = "0"; } if (IsNumeric(item.Value)) { UIData<int> intData = new UIData<int>(Conversion.ToInt32(item.Value), Types.Integer); intData.Validate(requiredMessage); intData.CopyValuesTo(item); } else { item.IsValid = Constants.NO; item.Message = (requiredMessage.Length == 0 ? "Invalid number" : requiredMessage); } break; case Types.Double: item.Value = item.Value.Replace("$", ""); if (item.Value.Length == 0) { item.Value = "0"; } if (IsNumeric(item.Value)) { UIData<double> doubleData = new UIData<double>(Conversion.ToDouble(item.Value), Types.Double); doubleData.Validate(requiredMessage); doubleData.CopyValuesTo(item); } else { item.IsValid = Constants.NO; item.Message = (requiredMessage.Length == 0 ? "Invalid number" : requiredMessage); } break; case Types.Decimal: item.Value = item.Value.Replace("$", ""); if (item.Value.Length == 0) { item.Value = "0"; } if (IsNumeric(item.Value)) { UIData<decimal> decData = new UIData<decimal>(Conversion.ToDecimal(item.Value, roundingDecimals), Types.Decimal); if (format == StringFormat.TrueTypeDecimalMoney) { decData.Validate(DecimalFormat.Money, requiredMessage); decData.CopyValuesTo(item); item.Value = decData.Value.ToString(); } else { decData.Validate(DecimalFormat.Plain, requiredMessage); decData.CopyValuesTo(item); } } else { item.IsValid = Constants.NO; item.Message = (requiredMessage.Length == 0 ? "Invalid number" : requiredMessage); } break; case Types.Boolean: try { if (Convert.ToBoolean(item.Value) == true | Convert.ToBoolean(item.Value) == false) { UIData<bool> boolData = new UIData<bool>(Convert.ToBoolean(item.Value), Types.Decimal); boolData.Validate(); boolData.CopyValuesTo(item); } else { item.IsValid = Constants.NO; item.Message = (requiredMessage.Length == 0 ? "Invalid boolean value" : requiredMessage); } } catch { item.IsValid = Constants.NO; item.Message = (requiredMessage.Length == 0 ? "Invalid boolean value" : requiredMessage); } break; default: if (trim) item.Value = item.Value.Trim(); ValidatedData result = new ValidatedData(); switch (format) { case StringFormat.Plain: result = ValidatePlain(item, maxLength, requiredMessage); break; case StringFormat.TitleCase: result = ValidateTitleCase(item, maxLength, requiredMessage); break; case StringFormat.Email: result = ValidateEmail(item, maxLength, requiredMessage); break; case StringFormat.PhoneNumber: result = ValidatePhoneNumber(item, requiredMessage); break; case StringFormat.SSN: result = ValidateSSN(item, requiredMessage); break; case StringFormat.Date: result = ValidateDate(item, requiredMessage); break; case StringFormat.DateTime: result = ValidateDateTime(item, requiredMessage); break; case StringFormat.ZipCode: result = ValidateZipcode(item, requiredMessage); break; } item.IsValid = result.IsGood; item.Message = result.Message; item.Value = result.NewValue; break; } return item; }