如何通过formdata传递整个模型对象并将其转换为控制器中的模型类型?
以下是我尝试过的!
JavaScript部分:
model = { EventFromDate: fromDate, EventToDate: toDate, ImageUrl: imgUrl, HotNewsDesc: $("#txthtDescription").val().trim(), }; formdata.append("model",model);
然后将其传递给AJAX,它将是一个字符串,如果我检查Request.Form["model"]结果的值将是相同的,即它将作为字符串接收,并且value将是"[object object]"
Request.Form["model"]
"[object object]"
有什么方法可以通过formdata传递模型并在控制器中接收模型?
如果你的观点是基于模型,并已产生内部控制<form>的标签,那么你可以序列化的模型来FormData使用
<form>
FormData
var formdata = new FormData($('form').get(0));
这还将包括使用生成的所有文件 <input type="file" name="myImage" .../>
<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)
HttpPostedFileBase
[HttpPost] public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage) { }
如果要添加表格中未包含的其他信息,则可以使用
formdata.append('someProperty', 'SomeValue');