У меня есть класс модели, подобный этому:
public class SomeClass
{
public int EmployeeId {get;set;}
public int DayTotal {get;set}
}
Для этого класса модели я создаю собственный атрибут ValidationAttribute для свойства 'DayTotal'.Пользовательский валидатор проверит введенное значение 'DayTotal' по сравнению с другой таблицей, которая определяет максимально допустимые дни.
Как ссылаться на выбранный 'EmployeeId' в представлении «Создать» при записи моего запроса в валидаторе?
public class DayTotalAttribute : ValidationAttribute
{
ProjectDBContext db = new ProjectDBContext();
public override bool IsValid(object value)
{
if (value == null)
{
return false;
}
var products = from p in db.EmployeeDayMax
where p.EmployeeId = ???
}
}
ОБНОВЛЕНИЕ:
Мое решение использует другой подход.Полезные ответы заставили меня искать в других местах.Этот блог от Скотта Гу помог обеспечить более простой подход:
В моей модели ->
public class SomeClass : IValidateObject
{
public int EmployeeId {get; set;}
public int DayTotal {get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
ProjectDBContext db = new ProjectDBContext();
//check maxes...can refer directly to EmployeeId in LINQ queries
if(failed)
{
yield return new ValidationResult("Days have been maxed!");
}