Для встроенного Remote
valition будет Get
или Post
методов для отправки запроса с содержимым в полях.Он не будет передавать объект файла с данными формы.
Попробуйте добавить собственный 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>
}
С помощью этого метода он отправит два запроса к действию с методом Get для встроенной проверки и методом Post для нашего пользовательского запроса, попробуйте изменить метод проверки как
public IActionResult ValidatePhoto(IFormFile Photo)
{
if (Request.Method == HttpMethods.Get)
{
return Json(true);
}
if (Validation.MeetsMinimumImageDimensions(Photo))
{
return Json(true);
}
return Json(false);
}