Я использую Asp.net MVC 4 и .NET 4.5. У меня есть представление, где в режиме редактирования отображаются имя класса, имя учителя класса и список учащихся этого класса. Мой главный вид выглядитПроверка модели не появляется в asp.net mvc
public class Class
{
public int ClassId { get; set; }
public string ClassName { get; set; }
public string ClassTeacherName { get; set; }
[RequiredInList(FieldName = "LastName", ErrorMessageResourceType = typeof(ErrorMessagesResource), ErrorMessageResourceName = "Required")]
public List<Student> Students { get; set; }
}
где я студент, как
public partial class Student
{
public int StudentID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public System.DateTime EnrollmentDate { get; set; }
public decimal RollNo { get; set; }
}
и мой пользовательский атрибут как
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = true)]
public class RequiredInListAttribute : RequiredAttribute
{
/// <summary>
/// Gets or sets the name.
/// </summary>
public string FieldName { get; set; }
/// <summary>
/// The is valid.
/// </summary>
/// <param name="value">
/// The value.
/// </param>
/// <param name="validationContext">
/// The validation context.
/// </param>
/// <returns>
/// The <see cref="ValidationResult"/>.
/// </returns>
/// <exception cref="InvalidOperationException">
/// Invalid operation exception
/// </exception>
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var val = value as IEnumerable;
if (value == null || val == null)
{
throw new InvalidOperationException("This attribute Required In List is intended to use only on list");
}
var isInvalidFiled =
(val.Cast<object>().Select(v => v.GetType().GetProperty(this.FieldName).GetValue(v, null))).Any(
property => property == null);
return !isInvalidFiled
? ValidationResult.Success
: new ValidationResult(string.Format(this.ErrorMessageString, "Last Name"), new[]{"Students[0].LastName"});
}
}
теперь моя проблема после отправки формы, даже если фамилия не предоставляется, ошибки не возникает.
... и отладки этот код говорит вам что? Каково значение 'isInvalidField' во время отладки? –
Значение isInvalidField подходит как True. поэтому должно быть добавлено идеальное сообщение о достоверности. но он не отображается в поле зрения – hajirazin
Сообщение о проверке, которое должно быть добавлено на стороне клиента или на стороне сервера? –