【发布时间】:2011-02-16 17:08:58
【问题描述】:
我有一个这样的模型类:
public class SomeClass
{
public int EmployeeId {get;set;}
public int DayTotal {get;set}
}
对于这个模型类,我正在为“DayTotal”属性创建一个自定义 ValidationAttribute。自定义验证器将根据另一个定义允许的最大天数的表检查输入的值“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 = ???
}
}
更新:
我的解决方案采用了不同的方法。有用的答案让我在其他地方寻找。来自 Scott Gu 的 blog 帮助提供了一种更简单的方法:
在我的模型中 ->
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!");
}
【问题讨论】:
-
调用Validate(..)时如何传入validationContext?
标签: c# validation model asp.net-mvc-3