C# 使用ajax和pass as模型使用.net核心MVC上载文件
我正在尝试使用.NETCore和MVCAJAX上传图像 这是我的代码C# 使用ajax和pass as模型使用.net核心MVC上载文件,c#,ajax,file,.net-core,asp.net-core-mvc,C#,Ajax,File,.net Core,Asp.net Core Mvc,我正在尝试使用.NETCore和MVCAJAX上传图像 这是我的代码 <form asp-action="AddImages" asp-controller="UserAdmin" data-ajax-begin="onBeginSubmit" data-ajax-complete="onComplete" data-ajax-failure="onFailed" data-ajax-success="
<form asp-action="AddImages" asp-controller="UserAdmin"
data-ajax-begin="onBeginSubmit" data-ajax-complete="onComplete"
data-ajax-failure="onFailed" data-ajax-success="onSuccessSubmit"
data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data">
<input id="file-input-1" name="Image" type="file" class="uploadimg" data-id="1" accept=".jpg, .jpeg, .png" />
<div class="col-xs-12">
<button type="submit">Save</button>
</div>
</form>
但是Image为空,model总是返回false我自己也遇到了这个问题,似乎唯一的解决方法是使用“传统”ajax将表单发回控制器。我的方法如下:- 将Submit按钮替换为调用Ajax的普通按钮:
<input type="button" class="btn btn-default" value="Save" onclick="javascript:submitForm()" />
希望这能帮助别人。遗憾的是,新的“data ajax”表单标记似乎无法处理发回的文件。在您的模型中,您有一个IFormFile列表,并且您正在传递一个IFormFile值。将图像的数据类型从列表更改为IFormFile,或使用第二个选项将html中输入的名称从图像更改为图像[0]。您的代码似乎没有问题。还有一件事你没有和我们分享。我尝试过在没有ajax的情况下工作”“ajax会有什么问题?可能是重复的
[HttpPost]
public bool AddImages(ImageModel Image)
{
if (!ModelState.IsValid)
{
return false;
}
return true;
}
<input type="button" class="btn btn-default" value="Save" onclick="javascript:submitForm()" />
function submitForm() {
var formdata = new FormData($('#yourFormId').get(0));
$.ajax({
url: '@Url.Action("YourActionName", "YourControllerName")',
type: 'POST',
data: formdata,
processData: false,
contentType: false,
success: function (data) {
//rendering success
},
error: function (xhr, ajaxOptions, thrownError) {
//rendering errors
}
});
}