Проверка вложенной коллекции ModelState

Возникла проблема при попытке сопоставить пользовательский интерфейс AngularJS с проверкой, возвращаемой контроллерами API .NET Core.

AngularJS используется в качестве интерфейса пользовательского интерфейса для нашего внутреннего API, и одна из конечных точек позволяет нам инициализировать сложный тип. Этот тип имеет несколько вложенных объектов, и мы бы предпочли разрешить один вызов API для добавления этого элемента в базу данных. Однако во время проверки элементов, поступающих в систему, мы получаем действительный результат проверки, просто понятия не имеем, как мы можем проанализировать это для работы с кодом на стороне клиента.

Пример кода:

ViewModelA

public class ViewModelA 
{
    public string Foo { get; set; }
}

ViewModelB

public class ViewModelB 
{
    public ICollection<ViewModelA> Bar { get; set; }
}

Контроллер

public IActionResult Post(ViewModelB vm) 
{
    // Omitted validation processing

    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // Omitted
}

Просмотр приложения AngularJS

<div ng-repeat = "x in values.fooList track by $index">
    <div class = "form-group">
        <input id = "{{$index}}_foo" ng-model = "x.foo"/>
        <span><!-- Validation Here --></span>
    </div>
</div>

Если мы получим ошибку проверки в вышеуказанном действии публикации над элементом в коллекции, мы получим что-то вроде:

{
    "Bar[0].Foo" : "Error Message",
    "Bar[1].Foo" : "Error Message"
}

Мы не можем использовать модельную систему Angular, поскольку возвращенный JSON не знает, что ошибка находится в списке элементов. Идея, которую я должен был пройти по этим сообщениям об ошибках, заключалась бы в использовании jQuery для обработки выведенного html, но если мы используем AngularJS, это кажется неправильным. Есть ли другой способ справиться с этим?

Примечание; Мы используем MVC для возврата представлений для приложения AngularJS, если это помогает генерировать соответствующие ответы.

Вам следует нормализовать реакцию на ошибку для атомарного объекта. Нравится { errors: [ { fieldId: 0, message: "Error Message" }, { fieldId: 1, message: "Error Message" } ] }

lin 16.03.2018 11:09

@lin Это не помогает. Подсписок, который я могу создать, но как мне обойти ошибки при динамическом сборе элементов?

D Hansen 16.03.2018 11:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
62
0

Другие вопросы по теме