我有一个具有以下签名的MVC控制器:-
[HttpPost]
public async Task<JsonResult> SaveBrochureAsAttachment(Guid listingId, HttpPostedFileWrapper attachmentFile)
{
///some logic
}
如何进行ajax调用并发送文件附件和其他listingId参数。目前,我只能像这样发送附件:-
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 listingId以匹配控制器签名。
答案 0 :(得分:1)
尝试添加另一个formdata parameter:
formData.append("listingId", guidValue);
提供了可访问的guid值。您可以从客户端使用this to generate one。或从服务器创建一个:
var guidValue = '@Guid.NewGuid()';
答案 1 :(得分:0)
一种方法是让您的控制器接受包含您需要的不同属性的viewmodel(一个类)。并使用formdata.append必需的东西发布到服务器。
在服务器端;您将需要使用modelbinder,以便填充所需的内容。
modelbinder的引用:https://www.dotnetcurry.com/aspnet-mvc/1261/custom-model-binder-aspnet-mvc
您可以在Google上获得更多信息。 :)