Я пытаюсь проверить модель в моем проекте MVC 5.Я создал метод, который проверяет модель на основе ее ValidationAttributes и возвращает список строк сообщений об ошибках
public static ModelStateDictionary ValidateModelWithPropertyNames<T>(this T obj, List<string> excludeProperties = null)
{
var ret = new List<Tuple<string, string>>();
var message = string.Empty;
var propertyName = string.Empty;
ModelStateDictionary dic = new ModelStateDictionary();
var context = new ValidationContext(obj, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(obj, context, results, true);
foreach (var item in results)
{
message = item.ToString();
propertyName = item.MemberNames.FirstOrDefault().ToString();
if (excludeProperties != null && excludeProperties.Any(u => u == propertyName))
continue;
dic.AddModelError(propertyName, message);
}
return dic;
}
Я пытаюсь получить имя свойства, используя
propertyName = item.MemberNames.FirstOrDefault().ToString();
но MemberNames всегда пуст.Есть ли способ, которым я могу получить имя свойства с проблемой проверки?Например, если у меня определено свойство, подобное этому
[Required]
[ExtraInfo(ColumnName = "Description_English_Column")]
[Display(Name = "English Description")]
public string DescriptionEN { get; set; }
Если оно пустое или пустое, метод вернет сообщение, подобное
«Поле описания на английском языке обязательно».
Пока все хорошо, но мне также нужно знать имя свойства, чтобы получить значение пользовательского атрибута ExtraInfo.