Загрузить приложение и некоторые дополнительные параметры в контроллер MVC - PullRequest
0 голосов
/ 09 октября 2018

У меня есть контроллер MVC со следующей подписью: -

[HttpPost]
public async Task<JsonResult> SaveBrochureAsAttachment(Guid listingId, HttpPostedFileWrapper attachmentFile)
{
     ///some logic
}

Как мне сделать вызов ajax и отправить вложение файла и дополнительный параметр перечисления ID.В настоящее время я могу только отправить вложение следующим образом: -

var uploadFile = function () {

    if ($('#attachmentFile').val()) {

    }
    else {
        alert('No File Uploaded');
        return;
    }

    var formData = new FormData($('#uploadForm')[0]);


    $.ajax({
        url: '/Listing/SaveBrochureAsAttachment',
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert('File Uploaded');
        },
        error: function (jqXHR, textStatus, errorThrown) {
            $("#FileUpload").replaceWith($("#FileUpload").val('').clone(true));
            alert('File Uploaded Error');
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
}

В настоящее время, как вы, ребята, можете видеть, я могу только отправить вложение.Как я также отправляю Guid перечисление ID, чтобы соответствовать подписи контроллера.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Один из подходов - ваш контроллер принимает viewmodel (класс), который содержит другое свойство, которое вам нужно.и использовать formdata.append необходимые вещи для публикации на сервере.

На стороне сервера;вам нужно будет использовать связыватель моделей, чтобы вы заполнили все необходимое.

Ссылка для связывателя моделей: https://www.dotnetcurry.com/aspnet-mvc/1261/custom-model-binder-aspnet-mvc

Вы можете получить больше на Google.:)

0 голосов
/ 09 октября 2018

Попробуйте добавить еще один параметр формы данных :

formData.append("listingId", guidValue);

При условии, что у вас есть доступное значение guid.Вы можете использовать это для генерации одного из клиента.Или создайте его с сервера:

var guidValue = '@Guid.NewGuid()';
...