如果使用MVC验证但发布JSON对象,如何在客户机上进行验证?

如果使用MVC验证但发布JSON对象,如何在客户机上进行验证?,json,asp.net-core,data-annotations,unobtrusive-validation,Json,Asp.net Core,Data Annotations,Unobtrusive Validation,我正在开发一个ASP.NET核心web应用程序,在该应用程序中,我使用DataAnnotation用验证属性装饰视图模型。当我打开包含输入的详细信息页面时,我看到Core将HTML5验证属性添加到呈现的HTML中(即data val=“true”) 但是,当用户单击Save按钮时,我编写了自定义客户端代码,如下所示: $(document).on("click", "#SaveAsset", function (event) { event.preventDefault(

我正在开发一个ASP.NET核心web应用程序,在该应用程序中,我使用DataAnnotation用验证属性装饰视图模型。当我打开包含输入的详细信息页面时,我看到Core将HTML5验证属性添加到呈现的HTML中(即data val=“true”)

但是,当用户单击Save按钮时,我编写了自定义客户端代码,如下所示:

    $(document).on("click", "#SaveAsset", function (event) {
        event.preventDefault();
        Asset.Save();
    });
window.Asset.Save = function () {

    var postData = {
        'Id': $("#Id").val(),
        'SerialNumber': $("#SerialNumber").val(),
        'PartNumber': $("#PartNumber").val(),
        'assetTypeId': $("#AssetTypeId").val()
    };

    $.post('/Asset/SaveAsset', postData);
}
我还有一个定义如下的保存函数:

    $(document).on("click", "#SaveAsset", function (event) {
        event.preventDefault();
        Asset.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的链接。现在,如果单击Save按钮,数据将发送到服务器,控制器将检查ModelState。但它甚至不应该向服务器发送任何东西。客户端应该停止验证

我应该停止这样做吗?例如,通过获取每个输入的val()来创建我的postData JSON对象


我应该使用form元素吗?我停止使用它,因为我的页面有数百个输入,所以我担心我会有问题。这样,我就可以控制每个输入。

在发送到服务器之前,使用javascript解决方案验证数据。否则,将数据发送到服务器,如果验证失败,则返回错误和错误请求

例如


然后捕获错误并发送给用户

。NET Core根本没有任何验证,它只是一个运行时。ASP.NET的核心是webstack…是的,您应该使用表单。您可以拦截提交,并且只有在验证成功后才能从javascript调用它。但如果您有100个输入字段,但只有pass/validate 4个,那么您应该重新考虑/重构您的设计