Проверка исходного кода ModelError принимает и то и другое, и используется для сбоев преобразования типов моделей.
В этом конкретном случае необходимо спуститься вниз по дереву исключений и получить внутренние исключения, когда необходимо найти фактическую корневую ошибку, а неуниверсальное сообщение об исключении верхнего уровня.
foreach (ModelError error in modelState.Errors.Where(err => String.IsNullOrEmpty(err.ErrorMessage) && err.Exception != null).ToList()) {
for (Exception exception = error.Exception; exception != null; exception = exception.InnerException) {
if (exception is FormatException) {
string displayName = propertyMetadata.GetDisplayName();
string errorMessageTemplate = GetValueInvalidResource(controllerContext);
string errorMessage = String.Format(CultureInfo.CurrentCulture, errorMessageTemplate, modelState.Value.AttemptedValue, displayName);
modelState.Errors.Remove(error);
modelState.Errors.Add(errorMessage);
break;
}
}
}
Как вы можете видеть, оно просматривает исключение в ModelError, чтобы найти исключение FormatException.Это единственная реальная ссылка на это, которую я могу найти как в MVC 2, так и в MVC 3.
Это говорит о том, что это, вероятно, не нужно для регулярного использования.