Asp.net core mvc .NET核心MVC中文件输入的远程验证

Asp.net core mvc .NET核心MVC中文件输入的远程验证,asp.net-core-mvc,remote-validation,Asp.net Core Mvc,Remote Validation,我在文本属性上实现了远程验证,没有问题,远程验证正确启动,但是我还尝试在提交表单之前为图像上传添加验证。理想情况下,我希望在选择本地文件后远程验证该文件。有什么办法可以让它工作吗?我看不出实际触发远程验证的事件是什么,但我猜它不是在文件的输入元素中触发的。 有什么建议吗?谢谢 已尝试以下方法: 视图模型: [Remote(action: "ValidatePhoto", controller: "Photos", ErrorMessage = "Photo width and height mu

我在文本属性上实现了远程验证,没有问题,远程验证正确启动,但是我还尝试在提交表单之前为图像上传添加验证。理想情况下,我希望在选择本地文件后远程验证该文件。有什么办法可以让它工作吗?我看不出实际触发远程验证的事件是什么,但我猜它不是在文件的输入元素中触发的。 有什么建议吗?谢谢

已尝试以下方法:

视图模型:

[Remote(action: "ValidatePhoto", controller: "Photos", ErrorMessage = "Photo width and height must be at least 300 pixels")]
public IFormFile Photo { get; set; }
摄影控制器:

public IActionResult ValidatePhoto(IFormFile Photo)
{
    if (Validation.MeetsMinimumImageDimensions(Photo))
    {
        return Json(true);
    }
    return Json(false);
}
视图:


对于内置的
远程
验证,它将
获取
发布
方法,以发送包含字段内容的请求。它不会提交包含表单数据的文件对象

尝试向后端方法实现您自己的ajax请求。如下图所示:

    @section Scripts {
        @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}

        <script type="text/javascript">
            $(document).ready(function () {
                document.querySelector("form input[type=file]").onchange = function (event) {
                    var path = $(this).attr("data-val-remote-url");
                    var field = $(this).attr("id");
                    var errormsg = $(this).attr("data-val-remote");
                    var formdata = new FormData();
                    var file = document.getElementById(field).files[0];
                    formdata.append(field, file)
                    $.ajax({
                        url: path,
                        type: 'POST',
                        data: formdata,
                        processData: false,
                        contentType: false,
                        success: function (data) {
                            if (data == false) {
                                var msg = $("[data-valmsg-for=" + field + "]").first();
                                msg.html(errormsg)
                            }
                        }
                    });
                    return false;
                };
            });
        </script>
    }

这非常有用,回答了我关于表单数据中文件验证的主要问题。谢谢
    @section Scripts {
        @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}

        <script type="text/javascript">
            $(document).ready(function () {
                document.querySelector("form input[type=file]").onchange = function (event) {
                    var path = $(this).attr("data-val-remote-url");
                    var field = $(this).attr("id");
                    var errormsg = $(this).attr("data-val-remote");
                    var formdata = new FormData();
                    var file = document.getElementById(field).files[0];
                    formdata.append(field, file)
                    $.ajax({
                        url: path,
                        type: 'POST',
                        data: formdata,
                        processData: false,
                        contentType: false,
                        success: function (data) {
                            if (data == false) {
                                var msg = $("[data-valmsg-for=" + field + "]").first();
                                msg.html(errormsg)
                            }
                        }
                    });
                    return false;
                };
            });
        </script>
    }
    public IActionResult ValidatePhoto(IFormFile Photo)
    {
        if (Request.Method == HttpMethods.Get)
        {
            return Json(true);
        }
        if (Validation.MeetsMinimumImageDimensions(Photo))
        {
            return Json(true);
        }
        return Json(false);
    }