如何将整套模型附加到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) { } })