我正在开发一个ASP.NET核心Web应用程序,我使用DataAnnotations用验证属性来装饰我的视图模型。当我使用输入打开详细信息页面时,我看到Core将HTML5验证属性添加到呈现的HTML中(即data-val =" true")。
但是,当用户单击“保存”按钮时,我编写了自定义客户端代码,如下所示:
$(document).on("click", "#SaveAsset", function (event) {
event.preventDefault();
Asset.Save();
});
我还有一个像这样定义的Save函数:
window.Asset.Save = function () {
var postData = {
'Id': $("#Id").val(),
'SerialNumber': $("#SerialNumber").val(),
'PartNumber': $("#PartNumber").val(),
'assetTypeId': $("#AssetTypeId").val()
};
$.post('/Asset/SaveAsset', postData);
}
我需要在调用$ .post之前先在客户端进行验证,但我对如何操作感到困惑。 Microsoft表明,当您将表单用于表单时,不引人注目的javascript会自动运行。但我没有使用HTML表单元素来提交我的页面。那么如何触发HTML5验证属性呢?
我添加了jquery.validate.js和jquery.validate.unobtrusive.js的链接。现在,如果单击“保存”按钮,数据将发送到服务器,控制器将检查ModelState。但它甚至不应该向服务器发送任何东西。客户端应该停止验证。
我是否应该停止这样做?例如,通过获取每个输入的val()来创建我的postData JSON对象。
我应该使用表单元素吗?我停止使用它,因为我的页面有数百个输入,所以我担心我会遇到问题。这样,我可以控制每个输入。
答案 0 :(得分:1)
使用jQuery Validation Plugin之类的javascript解决方案在发送到服务器之前验证数据。否则,将数据发送到服务器,如果验证失败,则返回错误请求的错误。
例如
Return BadRequest(string[]{"Name is required", "Id must me a number"});
然后将错误和鞋子捕获给用户