我正面临一个受孕问题。我们可以通过两种方式创建和更新我们的交易:使用网络表单(一种创建交易,另一种编辑交易)和通过集成文件(允许大规模创建和更新)。
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)还是不是?验证属性是否必须知道它应用的女巫类型?
提前感谢您的任何建议:)