我尝试使用带有mvc ajax的.net核心上传图片
这是我的代码
void A::abort()
{
{
std::lock(m1, m2); // deadlock-proof
std::lock_guard<std::mutex> lck(m1, std::adopt_lock);
std::lock_guard<std::mutex> update_lock(m2, std::adopt_lock);
is_being_updated = false;
this->value = 0; // Reset value
aborted = true;
}
cv.notify_one(); // Signal abort ...
t.join(); // Wait for the thread to finish
}
这是我的模型
<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>
我的方法
public class ImageModel
{
[Required(ErrorMessage = "Please Select Image of Product")]
public List<IFormFile> Image { get; set; }
}
但图片为空,模型始终返回false
答案 0 :(得分:2)
我本人只是遇到了这个问题,似乎唯一的解决方法是使用“传统” ajax将表单发布回控制器。我的方法如下:-
用调用Ajax的普通按钮替换“提交”按钮:
<input type="button" class="btn btn-default" value="Save" onclick="javascript:submitForm()" />
然后使用Ajax收集表单数据并将其发布回控制器操作:
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
}
});
}
希望这可以帮助某人。令人遗憾的是,新的“数据ajax”表单标签似乎无法处理回发文件。