У меня проблема с зачатием. Мы могли бы создавать и обновлять наши сделки двумя способами: используя веб-формы (одна для создания сделок, другая для их редактирования) и через файл интеграции (чтобы разрешить массовое создание и обновление).
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; }
}
У меня есть логика проверки для реализации: при создании сделки принимаются только активные продавцы; при обновлении принимается активный продавец плюс предыдущее значение продавца (хранящееся в БД).
Я написал что-то вроде этого:
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) или нет? Должен ли атрибут проверки знать тип модели, к которой он применяется?
Заранее благодарю за любой совет :)
[Validate(IIntegrationLineCommand)] public int alesmanID { get; set; }
- person ramiramilu   schedule 05.07.2015