验证属性取决于对象实例类型

时间:2015-07-05 14:49:44

标签: c# asp.net-mvc-4 data-annotations validationattribute

我面临一个受孕问题。我们可以通过两种方式创建和更新我们的交易:使用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)吗?验证属性是否必须知道它适用的那种模型?

提前感谢任何建议:)

0 个答案:

没有答案
相关问题