当前位置: 首页 > 面试题库 >

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

谢洛城
2023-03-14
问题内容

如何通过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传递模型并在控制器中接收模型?


问题答案:

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


 类似资料:
  • < code>fd.append("upload ",file)产生, 产生, 但我需要这个, 这是我的代码:

  • 问题内容: 我正在使用ajax提交包含数组,文本字段和文件的多部分表单。 我将每个VAR附加到主数据中 然后我使用ajax函数将其发送到PHP文件以存储在sql DB中。 但是在PHP方面,变量(即数组)显示为字符串。 当我不使用ajax作为表单数据发送它,而是使用简单的选项时,确实在PHP端将它作为数组获得,但是后来我也无法发送文件。 有什么办法吗? 问题答案: 您有几种选择: 将其转换为JSO

  • 问题内容: 我一直在尝试重新实现HTML5图像上传程序,HTML5图像上传程序,但是它可以与WebKit浏览器一起使用。任务的一部分是从对象中提取图像文件,并将其附加到FormData对象以进行上传。 问题在于,虽然具有返回图像文件表示形式的功能,但FormData对象仅接受FileAPI中的 File或Blob对象。 Mozilla解决方案在Firefox上使用了以下仅Firefox功能: …在

  • 是这种格式,在后端,我只在请求中获得格式。我还需要发送“original_file_name”和“function_name”属性。当然,我可以将数组分成3个部分并分别追加它们,但是有没有办法将每个mediasData数组索引的所有there属性发送到formdata数组各自的索引中?

  • 问题内容: 在名为News的模型中 在Javascript中,我将AJAX post方法与formdata一起使用。我要设置这个区域。 上面我在JS中编写的代码是这样设置的 和上面的代码我将进入控制器。但是,尽管至少我选择了两个区域,但它始终返回0条记录。 我的Ajax方法在上面。我在哪里犯错? 提前致谢。 问题答案: 如果您用于发送数据,则需要将每个单独的名称/值发送给。由于它是一个集合,因此您