проверка достоверности данных аннотации свойств IList - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть сценарий, такой как форма заказа, где один заказ может иметь несколько строк заказов.я реализую это на одной странице в asp.net mvc (основная форма детализации). На мой взгляд модель выглядит как

открытый класс Order

{
   public int OrderID{get;set;}
   public int CustomerID{get;set;}
   public DateTime OrderDate{get;set;}
   public string ShippingAddress{get;set;}
   [ProductUnique(ErrorMessage = "Product must be unique in an order")]
   public IList<OrderLineItem> ProductLines{get;set;}
}

public class OrderLineItem 
{
   public int OrderLineItemID{get;set;}
   public int ProductID{get;set;}
   public int Quantity{get;set;}
}

я хочу, чтобы атрибут ProductUnique позволял использовать один продуктпоявляются только один раз в одном порядке, мои вопросы

  1. есть ли какое-то нестандартное решение этой проблемы
  2. , если мне нужно свернуть свой собственный атрибут проверки, как я могу
    подключите его на стороне клиента, где должно отображаться сообщение об ошибке (со свойством или в сводке проверки).если бы я мог прикрепить его к свойству
    , это было бы действительно здорово

В настоящее время мы находимся на mvc2, но мы планируем обновить, поэтому любой ответ с mvc3 будет одинаково хорош.спасибо

1 Ответ

0 голосов
/ 18 апреля 2011

Это немного тангенциально, но я думаю, что валидация не является правильным подходом здесь.Почему бы не сделать так, чтобы ваша модель выглядела так:

public class Order
{
    public int OrderID{get;set;}
    public int CustomerID{get;set;}
    public DateTime OrderDate{get;set;}
    public string ShippingAddress{get;set;}
    public IDictionary<int, int> ProductQuantities{get;set;}
}

Затем, если ваш пользователь добавляет существующий продукт в заказ, просто представьте текущее количество и предложите варианты его увеличения.Таким образом, вы направляете пользователя в правильное использование вашего интерфейса, а не позволяете ему сделать ошибку, а затем наказываете его сообщением проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...