ModelState嵌套集合验证

时间:2018-03-16 10:00:26

标签: c# angularjs validation asp.net-core

尝试将AngularJS UI映射到从.NET Core API控制器返回的验证时出现问题。

AngularJS用作我们内部构建的API的UI界面,其中一个端点允许我们初始化复杂类型。此类型具有多个嵌套对象,我们希望允许单个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应用程序的视图,如果这有助于生成相关答案。

0 个答案:

没有答案