[英]How to Post file along with form data to MVC controller using Ajax?
我正在尝试使用jquery Ajax将文件以及其他表单数据发布到MVC控制器。
jQuery Ajax调用
function SaveStundent () {
var formData = new FormData();
var file = document.getElementById("studImg").files[0];
formData.append("studImg", file);
var studentDetails = {
Name: $('#txtName').val().trim()
};
formData.append("studentDetails", studentDetails);
$.ajax({
type: "POST",
url: "@(Url.Action("CreateStudent", "Student"))",
data: formData,
processData: false,
contentType: false,
success: function (response) {
}
});
}
MVC控制器
[HttpPost]
public ActionResult CreateStudent(Student studentDetails)
{
// ...
}
学生模型
public class Student
{
public string Name { get; set; }
}
虽然我可以在Request中获取文件,但MVC控制器中的studentDetails
参数始终为null。
尝试这个
function SaveStundent () {
var formData = new FormData();
var file = document.getElementById("studImg").files[0];
formData.append("studImg", file);
var Name= $('#txtName').val().trim()
formData.append("Name", Name);
$.ajax({
type: "POST",
url: "@(Url.Action("CreateStudent", "Student"))",
data: formData,
processData: false,
contentType: false,
success: function (response) {
}
});
}
然后更改操作以获取如下图像
[HttpPost]
public ActionResult CreateStudent(Student studentDetails,HttpPostedFileBase studImg)
{
// ...
}
工作守则
<form id="frm" enctype="multipart/form-data">
<input type="file" name="studImg" id="studImg" />
<input type="text" name="txtName" id="txtName" />
<input type="button" value="Save" onclick="SaveStundent()" />
</form>
<script>
function SaveStundent () {
var formData = new FormData();
var file = document.getElementById("studImg").files[0];
formData.append("studImg", file);
var Name = $('#txtName').val().trim()
formData.append("Name", Name);
$.ajax({
type: "POST",
url: "@(Url.Action("CreateStudent", "Student"))",
data: formData,
processData: false,
contentType: false,
success: function (response) {
}
});
}
</script>
public ActionResult CreateStudent(string Name, HttpPostedFileBase studImg)
{
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.