I have a working modal window that saves an entity to the database, my question is how to send files from the modal?
Here as my current JavaScript function:
$('#btn-save').on('click', function () {
    $.ajax({
        url: '@Url.Action("CreateModal", "Suggestions")',
        type: 'POST',
        data: $('#modal-form').serialize(),
        success: function (data) {
            if (data.success == true) {
                $('#suggestion-modal').modal('hide');
                location.reload(true);
            } else {
                $('.modal-content').html(data);
                $('#suggestion-modal').modal('show');
            }
        }
    });
});
This part does not send data, but works fine when not using modal and using standard MVC Create template:
<form id="modal-form" method="post" enctype="multipart/form-data">
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    @Html.HiddenFor(model => model.UserId)
    <div>
        @Html.LabelFor(model => model.Title)
        @Html.EditorFor(model => model.Title)
        @Html.ValidationMessageFor(model => model.Title, "")
    </div>
    <div>
        @Html.LabelFor(model => model.Images, "Images")
        <input type="file" name="upload" multiple />
    </div>
    <div>
        <input id="btn-save" type="button" value="" />
    </div>
</form>
I've left the rest of the partial view out as that all works correctly.
EDIT: Just added where my button was in the form. It was there, I just removed much of the code not relevant to the question - should have left the button in. Also added extra model properties - These must be sent with the file, including validation token.
EDIT: Many thanks to Jasen. I've included the JavaScript below for anyone else struggling with this.
$('#btn-save').on('click', function () {
    var formData = new FormData($('form').get(0));
    $.ajax({
        url: '@Url.Action("CreateModal", "Suggestions")',
        type: 'POST',
        processData: false,
        contentType: false,
        data: formData,
        success: function (data) {
            if (data.success == true) {
                $('#suggestion-modal').modal('hide');
                location.reload(true);
            } else {
                $('.modal-content').html(data);
                $('#suggestion-modal').modal('show');
            }
        }
    });
});
