javascript - 如何将整套模型附加到formdata并在MVC中获取

标签 javascript c# ajax asp.net-mvc form-data

如何通过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/

相关文章:

C# mysql参数值为null?

javascript - AJAX 无法在另一个页面上正常工作

ajax - tinyMCE ajax保存数据

javascript - 如何允许用户输入颜色(十六进制或 RGB)以进行列表自定义,但确保其有效

javascript - 动画正在降低网页的性能

php - 无法在 jQuery 中获取可拖动 div 的 ID(使用 jQuery UI)

c# - 在 DataPager 中获取事件号码页

javascript - 在 DOJO 中格式化 ddmmyy

c# - 比较列表 C# 中的字符

javascript - 使用 Laravel 发送 Ajax 请求