gpt4 book ai didi

c# - 使用 ASP .NET MVC 模型值来验证另一个模型值?

转载 作者:太空狗 更新时间:2023-10-29 17:48:43 26 4
gpt4 key购买 nike

我有一个像这样的模型类:

public class SomeClass
{
public int EmployeeId {get;set;}
public int DayTotal {get;set}
}

对于这个模型类,我正在为“DayTotal”属性创建自定义 ValidationAttribute。自定义验证器将根据定义允许的最长天数的另一个表检查输入的“DayTotal”值。

在验证器中编写查询时,如何从创建 View 中引用选定的“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 = ???
}
}

更新:

我的解决方案采用了不同的方法。有用的答案让我在其他地方寻找。这blog来自 Scott Gu 的帮助提供了一种更简单的方法:

在我的模型中 ->

   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!");
}

最佳答案

@Luke Bennett完全正确,ValidationContext 是 MVC 3 中的新内容。

这是一个使用您的代码的示例:

public class DayTotalAttribute : ValidationAttribute
{
ProjectDBContext db = new ProjectDBContext();

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
var model = (SomeClass)validationContext.ObjectInstance;
var products = from p in db.EmployeeDayMax
where p.EmployeeId = model.EmployeeId

bool somethingIsWrong = // do your validation here

if (somethingIsWrong)
{
return ValidationResult("Error Message");
}
}

return base.IsValid(value, validationContext);
}
}

关于c# - 使用 ASP .NET MVC 模型值来验证另一个模型值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com