У меня есть такой класс модели:
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 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!");
}