Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发送数据,使用IFormFile查看模型,如果使用不显眼的ajax表单_C#_Jquery_Ajax_Asp.net Core_Iformfile - Fatal编程技术网

C# 发送数据,使用IFormFile查看模型,如果使用不显眼的ajax表单

C# 发送数据,使用IFormFile查看模型,如果使用不显眼的ajax表单,c#,jquery,ajax,asp.net-core,iformfile,C#,Jquery,Ajax,Asp.net Core,Iformfile,我在单独的视图MyAddForm.cshtml中有一个表单 @model MyViewModel <form id="my_form" class="form-inline" asp-action="MyAddForm" asp-controller="Profile" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#my_form" data-ajax-method="POST" enctype="multipa

我在单独的视图MyAddForm.cshtml中有一个表单

@model MyViewModel

<form id="my_form" class="form-inline" asp-action="MyAddForm" asp-controller="Profile" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#my_form" data-ajax-method="POST" enctype="multipart/form-data">
...
<div class="row">
    <div class="form-group col-xs-12">
        <label asp-for="Name"></label>
        <input class="form-control input-group-lg" type="text" asp-for="Name" />
        <span asp-validation-for="Name"></span>
    </div>
</div>
...
<div class="row">
    <div class="form-group col-xs-12">
        <label asp-for="Image"></label>
        <input asp-for="Image" type="file" class="form-control" />
    </div>
</div>
...
</form>
还有一个控制器:

[HttpPost]
public async Task<IActionResult> MyAddForm(MyViewModel model)
{
    //model.Image always null...
    ...
    return PartialView("~/Views/Profile/MyAddFormForm.cshtml", model);
}
更新2:

在这种结构中:“
$(document).on”(“submit”、“#my_form”、function(event){}
”默认操作取消事件在默认情况下不起作用,因此存在双重数据发送

调用ajax后,我不得不插入以下代码,ajax呈现了表单本身:

...
}).done(function (result) {
    $('#add_cat').html(result);
    ...
    $('#my_form').submit(function (e) {
        e.preventDefault(); //Now the cancellation event works
        var formdata = new FormData($('#my_form')[0]);
        $.ajax({
            url: '@Url.Action("MyAddForm", "Profile")',
            type: 'POST',
            data: formdata,
            processData: false,
            contentType: false
        }).done(function (result) {
            $('#my_form').html(result);
        });
        return false;
    });
});
现在它起作用了:) 对不起,我的英语

$(document).on("submit", '#my_form', function (event) {
    var formdata = new FormData($('#my_form')[0]);
    $.ajax({
        url: '@Url.Action("MyAddForm", "Profile")',
        type: 'POST',
        data: formdata,
        processData: false,
        contentType: false
    }).done(function (result) {
        $('#my_form').html(result);
    });
    event.preventDefault();
});
...
}).done(function (result) {
    $('#add_cat').html(result);
    ...
    $('#my_form').submit(function (e) {
        e.preventDefault(); //Now the cancellation event works
        var formdata = new FormData($('#my_form')[0]);
        $.ajax({
            url: '@Url.Action("MyAddForm", "Profile")',
            type: 'POST',
            data: formdata,
            processData: false,
            contentType: false
        }).done(function (result) {
            $('#my_form').html(result);
        });
        return false;
    });
});