1

我正面临一个受孕问题。我们可以通过两种方式创建和更新我们的交易:使用网络表单(一种创建交易,另一种编辑交易)和通过集成文件(允许大规模创建和更新)。

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)还是不是?验证属性是否必须知道它应用的女巫类型?

提前感谢您的任何建议:)

4

0 回答 0