我目前有一个项目,正在将客户端内容转换为Angular,因为我喜欢它的绑定方面。目前,我正在服务器上进行表单验证。在客户端和服务器上都做了多年之后,我发现我的偏爱是通过对服务器的AJAX请求来实现的。因此,根据设计,没有客户端表单验证。
它可以解决问题,我可以使用jQuery来显示ModelState中存在的任何验证错误,然后以json形式将其发送回客户端,以点亮表单。
现在是Angular。我想保留此实现,但是我感觉自己正在为此与技术作斗争。Angular似乎坚持客户端验证。
有没有办法在收到带有验证错误的AJAX响应后,告诉Angular验证机制什么无效,所以我仍然可以只使用服务器端验证?
编辑,我应该包含指向我实现该实现的帖子的链接-http://timgthomas.com/2013/09/simplify-client-side-validation-by-adding-a-server/如您所见,它不使用Angular。最好将其用于服务器端,并使其与AngularJs一起使用
谢谢
这是一种实现方法,具体取决于您愿意在当前代码中进行多少更改并假设一些事情。
我们有一个这样的表格
<form name="form" novalidate ng-submit="update(form)">
<input type="text" ng-model="Input" name="Input"/>
<button type="submit">Save</button>
</form>
然后您的更新功能应如下所示
function update(form) {
testResource.save($scope.Input)
.$promise
.then(function (response) {
console.log("Success");
})
.catch(function (response) {
console.log("fail");
for (var i = 0; i < response.data.length; i++) {
form[response.data[i].Name].$setValidity(response.data[i].Error, false);
}
});
}
失败响应中的数据将采用以下结构
[{ Name: "Input", Error: "required" }];
这应该允许您在服务器上进行所有验证,并将其传递给angular进行处理。
更详细一点,在Submit函数上,您将角度形式发送给控制器,然后,当角度资源得到错误响应时,您将错误添加到具有错误的form属性中。这意味着您输入的名称必须与错误响应中传递的名称相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句