Asp.net mvc пользовательская проверка элементов списка в сложном классе - PullRequest
0 голосов
/ 02 июля 2018

Я отображаю записи с деталями в виде (используя asp.net mvc). Пользователь должен ввести серийные номера и опубликовать вид назад. Я хотел бы проверить, не совершил ли пользователь ошибку и все ли серийные номера уникальны в подробном списке. Если серийный номер был случайно введен дважды, я хотел бы указать пользователю точные поля, содержащие эти дубликаты серийного номера.

У меня есть эти классы (они более сложные):

public class Record 
{
    public long ID { get; set; }
    public List<Detail> Details { get; set; }
}

public class Detail
{
    public long ID { get; set; }
    public string SerialNo { get; set; }
}

Я пытался использовать пользовательский атрибут проверки, но я никак не могу получить доступ ко всему списку из подробного представления, чтобы проверить, является ли это уникальный серийный номер.

Если я использую атрибут проверки для деталей внутри класса записи,

[SerialNoShouldBeUnique]
public List<Detail> Details { get; set; } 

Я могу проверить факт и указать пользователю, что есть дубликаты, но я не могу точно пометить эти детали как ошибочные.
Я нашел где-то, чтобы проверить весь подробный список, перебрать элементы и добавить ошибки проверки, используя индексы Detail [i], но я отображаю детали в представлении, используя этот тип индексации элементов , поэтому я не могу легко получить доступ эти индексы.

Я мог бы проверить эти серийные номера в действии контроллера. Если я найду дубликаты, пройду через ModelState, найду эти ключи Details [aa ..- .. xx] .SerialNo и добавлю ошибку вручную. Но мне не нравится этот подход, и я бы хотел использовать валидацию (на стороне сервера).

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