Angular with .NET Web API验证和单点实证

时间:2014-09-30 00:05:03

标签: asp.net-mvc angularjs validation

是否有一种方法可以保留验证的单一定义,允许立即进行客户端验证,并且仍然提供服务器端验证的强度?

我熟悉以下两种方法:

首先根据模型中规定的规则在Razor输出中呈现ng-validation语法。当Razor的观点经常不能直观地与一个组织良好的Angular应用程序配对时,这似乎让我对构建Razor视图过于紧密。我可以使用这种方法,但似乎更多的是想要复制“不引人注目的jQuery / MVC验证”的人,而不是构建一个非常适合Angular的东西。

第二种方法只是将服务器端验证返回给Angular进行渲染。它也没有彻底完成它。如果需要,我可以在没有客户端验证的情况下运行,因为单页应用程序仍然不会屏幕闪烁...但它并不理想。

例如,可能有一个工具集可以直接在WebAPI上直接反映验证规则,并在Angular应用程序中使用它们。或者我还没找到另一种方法?

https://www.youtube.com/watch?v=lHbWRFpbma4#t=1336,演示者似乎暗示这个问题已经为Angular得到了很好的解决,并且引用了specificationDDD Using Specification pattern for Validation)。如果你知道有任何工具可以解决我的问题,我很乐意听到它。

P.S。看起来这几乎肯定是一个经常被问到的问题。对不起,我在发布之前无法找到答案

p.p.s。我目前正计划使用实体框架,但我会转而解决这个问题。哎呀,我会考虑转换到一个完全不同的平台,这是我的第一个以角度为中心的项目。

1 个答案:

答案 0 :(得分:2)

我推荐的方法基于@Esteban Felix评论,我在Java / Bean验证和JSON模式生成器中使用了类似的策略。

使用Validate Model Data Using DataAnnotations

为您的域模型添加注释

使用JSON.net other useful links

生成架构

创建一个AutoValidate指令,该指令继续并使用AngularJS内置的指令装饰字段以进行表单验证,例如ngPattern以及min/max之类的简单内容。在我的例子中,我创建了从Java世界到AngularJS指令的映射,无论我需要在哪里创建自定义指令。