我面临一个受孕问题。我们可以通过两种方式创建和更新我们的交易:使用Web表单(一个用于创建交易,另一个用于编辑它们)和通过集成文件(用于批量创建和更新)。
public class CreateDealViewModel
{
public int dealID { get; set; }
[ValidateSalesman]
public int SalesmanID { get; set; }
}
public class EditDealViewModel
{
public int dealID { get; set; }
[ValidateSalesman]
public int SalesmanID { get; set; }
}
public class IntegrationLine
{
public int DealID { get; set; }
[ValidateSalesman]
public int SalesmanID { get; set; }
public string Status { get; set; }
}
我有一个验证逻辑来实现:在交易创建时,只接受活跃的推销员;在更新中,接受活跃的销售员加上之前的销售员值(存储在DB中)。
我写了这样的话:
public class ValidateSalesman : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var container = validationContext.ObjectInstance;
if (container.GetType() == typeof(IntegrationLine))
{
if(((IntegrationLine)container).Status == "CREATION")
{
//Validation logic here
}
else
{
//Validation logic here
}
}
else if(container.GetType() == typeof(CreateDealViewModel))
{
//Validation logic here
}
else if(container.GetType() == typeof(EditDealViewModel))
{
//Validation logic here
}
}
}
}
这是一种好的方法(符合MVC)吗?验证属性是否必须知道它适用的那种模型?
提前感谢任何建议:)