Вы можете добавить другие значения поля ввода в объект FormData.
Я бы начал с создания модели представления для приема полезной нагрузки ajax
public class UploadVm
{
public string Type { set; get; }
public string Id { set; get; }
public HttpPostedFileBase File { set; get; }
}
Теперь, по вашему мнению, добавьте 2дополнительные элементы ввода для чтения этого значения от пользователя
<input id="id" type="text" />
<input id="type" type="text" />
Теперь в свой код вызова ajax добавьте еще 2 элемента к объекту FormData
.
$("#start_upload").click(function (evt) {
var fileUpload = $("#file-upload").get(0);
var files = fileUpload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append("File", files[i]);
}
//Add the input element values
data.append("Type", $("#type").val());
data.append("Id", $("#id").val());
$.ajax({
type: "POST",
url: "/Products/UploadFiles",
contentType: false,
processData: false,
data: data,
success: function (message) {
console.log(message);
},
error: function () {
alert("There was error uploading files!");
}
});
});
Теперь на стороне вашего сервераВы можете использовать нашу новую модель представления в качестве параметра для метода действия.Когда будет выполнен вызов ajax, связыватель модели сможет отобразить полученные данные из запроса и сопоставить их со свойствами нашего UploadVm
объекта модели представления.
[HttpPost]
public ActionResult UploadFiles(UploadVm model)
{
// to do : read values of model and use it
// to do : return something
}