如何通过formdata传递一整套模型对象,并在 Controller 中将其转换为模型类型?
下面是我试过的!
JavaScript 部分:
model = {
EventFromDate: fromDate,
EventToDate: toDate,
ImageUrl: imgUrl,
HotNewsDesc: $("#txthtDescription").val().trim(),
};
formdata.append("model",model);
然后通过 AJAX 传递它,它将是一个字符串,如果我检查 Request.Form["model"]
的值,结果将是相同的,即它将被接收为字符串和值将是 [object object]"
有什么方法可以通过formdata传递model并在controller中接收吗?
最佳答案
如果您的 View 基于模型并且您已经在<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,
});
在你的 Controller 中
[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}
或者(如果您的模型不包含 HttpPostedFileBase
的属性)
[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}
如果你想添加表单中没有的额外信息,那么你可以使用
formdata.append('someProperty', 'SomeValue');
关于javascript - 如何将整套模型附加到formdata并在MVC中获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29293637/