如何使用模态窗口和MVC

时间:2017-07-19 17:20:36

标签: javascript twitter-bootstrap model-view-controller

我有一个工作模式窗口将实体保存到数据库,我的问题是如何从模态发送文件?

这是我目前的JavaScript函数:

$('#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');
            }
        }
    });
});

此部分不发送数据,但在不使用模态和使用标准MVC创建模板时工作正常:

<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>

由于一切正常,我已将部分视图的其余部分留下了。

编辑:刚添加我的按钮在表单中的位置。就在那里,我刚刚删除了与问题无关的大部分代码 - 应该已经离开了按钮。还添加了额外的模型属性 - 这些必须与文件一起发送,包括验证令牌。

编辑:非常感谢Jasen。我已将下面的JavaScript包含在其他任何正在努力解决此问题的人手中。

$('#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');
            }
        }
    });
});

0 个答案:

没有答案