Возникла проблема при попытке сопоставить пользовательский интерфейс 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, если это помогает генерировать соответствующие ответы.
@lin Это не помогает. Подсписок, который я могу создать, но как мне обойти ошибки при динамическом сборе элементов?





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