Я пытаюсь передать файл и строку в контроллер. Когда нажата кнопка «Отправить», выбранный файл и строка отправляются в контроллер, и автоматическое связывание моделей работает для файла, а не для строки. Это то, что я делал до сих пор. Спасибо!
<div class="container">
<form method="post" action="" enctype="multipart/form-data" id="myform">
<div>
<input type="file" id="file" name="someFile" />
<button id="but_upload"> submit</button>
</div>
</form>
</div>
<script>
$(document).ready(function () {
$("#but_upload").click(function () {
var myFile = $('#file').prop('files');
var data = {
someFile:myFile,
myString: "Hello World"
};
$.ajax({
dataType: 'html',
type: 'POST',
url: '/Home/PassFileAndData',
data: data,
success: function (data) {
alert("Success");
},
error: function (xhr, ajaxOptions, thrownError) {
alert("failure");
}
});
});
});
</script>
public ActionResult PassFileAndData(HttpPostedFileBase someFile , string myString)
{
return View();
}
Я также нашел этот пост: Несколько параметров на jquery ajax, вызов asp.net и вместо вышеупомянутого кода javascript я попробовал это. но опять-таки только файл передается в контроллер. Любая помощь, пожалуйста?
<script>
$(document).ready(function () {
$("#but_upload").click(function () {
var myFile = $('#file').prop('files');
var formData = new FormData();
formData.append("someFile", myFile);
formData.append("myString","HelloWorld");
$.ajax({
//contentType: "application/json; charset=utf-8", //if i want automatic model binding vgale ta sxolia
//enctype: 'multipart/form-data',
processData: false,
contentType: false,
//cache: false,
dataType: 'html',
type: 'POST',
url: '/Home/PassFileAndData',
data: formData,
success: function (data) {
alert("Success passing List");
},
error: function (xhr, ajaxOptions, thrownError) {
alert("failure");
}
});
});
});
</script>