使用ajax上传带有.net核心MVC的文件并传递为模型

时间:2018-01-15 08:02:57

标签: c# ajax file .net-core asp.net-core-mvc

我尝试使用带有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

1 个答案:

答案 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”表单标签似乎无法处理回发文件。