一尘不染

JavaScript如何将整个模型追加到formdata并在MVC中获取

javascript

如何通过formdata传递整个模型对象并将其转换为控制器中的模型类型?

以下是我尝试过的!

JavaScript部分:

model = {
             EventFromDate: fromDate,
             EventToDate: toDate,
             ImageUrl: imgUrl,
             HotNewsDesc: $("#txthtDescription").val().trim(),
        };
formdata.append("model",model);

然后将其传递给AJAX,它将是一个字符串,如果我检查Request.Form["model"]结果的值将是相同的,即它将作为字符串接收,并且value将是"[object object]"

有什么方法可以通过formdata传递模型并在控制器中接收模型?


阅读 372

收藏
2020-04-22

共1个答案

一尘不染

如果你的观点是基于模型,并已产生内部控制<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');
2020-04-22