Gur*_*Rao 67 javascript c# ajax asp.net-mvc form-data
如何通过formdata传递整个模型对象并将其转换为控制器中的模型类型?
以下是我尝试过的!
JavaScript部分:
model = {
EventFromDate: fromDate,
EventToDate: toDate,
ImageUrl: imgUrl,
HotNewsDesc: $("#txthtDescription").val().trim(),
};
formdata.append("model",model);
Run Code Online (Sandbox Code Playgroud)
然后通过AJAX传递它,它将是一个字符串,如果我检查Request.Form["model"]结果的值将是相同的,那就是它将作为字符串接收并且值将是"[object object]"
有没有办法通过formdata传递模型并在控制器中接收它?
小智 83
如果您的视图基于模型并且您已在<form>标记内生成控件,则可以将模型序列化为FormData使用
var formdata = new FormData($('form').get(0));
Run Code Online (Sandbox Code Playgroud)
这还包括使用生成的任何文件 <input type="file" name="myImage" .../>
然后用它回发
$.ajax({
url: '@Url.Action("YourActionName", "YourControllerName")',
type: 'POST',
data: formdata,
processData: false,
contentType: false,
});
Run Code Online (Sandbox Code Playgroud)
并在你的控制器
[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}
Run Code Online (Sandbox Code Playgroud)
或(如果您的模型不包含属性HttpPostedFileBase)
[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}
Run Code Online (Sandbox Code Playgroud)
如果要添加表单中没有的其他信息,可以使用附加信息
formdata.append('someProperty', 'SomeValue');
Run Code Online (Sandbox Code Playgroud)
小智 19
如果你想使用Ajax发送表单数据.这是发送方式
var formData = new FormData();
//File Upload
var totalFiles = document.getElementById("Iupload").files.length;
for (var i = 0; i < totalFiles; i++) {
var file = document.getElementById("Iupload").files[i];
formData.append("Document", file);
}
formData.append("NameCode", $('#SelecterID').val());
formData.append("AirLineCode", $('#SelecterID').val());
$.ajax({
url: "/Controller/ActionName",
type: "POST",
dataType: "JSON",
data: formData,
contentType: false,
processData: false,
success: function (result) {
}
})
Run Code Online (Sandbox Code Playgroud)