如何将整套模型附加到formdata中并在MVC中获取
如何通过formdata传递整个模型对象并将其转换为控制器中的模型types?
以下是我试过的!
JavaScript部分:
model = { EventFromDate: fromDate, EventToDate: toDate, ImageUrl: imgUrl, HotNewsDesc: $("#txthtDescription").val().trim(), }; formdata.append("model",model);
然后通过AJAX传递,它将是一个string,如果我检查Request.Form["model"]
的值,结果将是相同的,那就是它将被接收为string,值将是"[object object]"
有没有办法通过formdata传递模型,并在控制器中接收它?
如果您的视图基于模型,并且已经在<form>
标记中生成了控件,则可以使用序列化模型到FormData
var formdata = new FormData($('form').get(0));
这还将包括使用<input type="file" name="myImage" .../>
生成的所有文件
并发回使用
$.ajax({ url: '@Url.Action("YourActionName", "YourControllerName")', type: 'POST', data: formdata, processData: false, contentType: false, });
并在你的控制器
[HttpPost] public ActionResult YourActionName(YourModelType model) { }
或者(如果你的模型不包含HttpPostedFileBase
的属性)
[HttpPost] public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage) { }
如果您想添加不在表单中的其他信息,则可以使用附加信息
formdata.append('someProperty', 'SomeValue');
如果你想使用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) { } })