c# - 如何使用ajax发送字典和文件

标签 c# ajax asp.net-mvc post

在我的 html 代码中,我有一个文件(没有表单标签)

<input id="file1" type="file" class="form-control form-exception">

和一些文本框

<input id="id-one" type="text" class="form-control" >
<input id="id-two" type="text" class="form-control" >
...
<input id="id-six" type="text" class="form-control" >
...

C# 中的代码隐藏

public class Model
{
        public int Id { get; set; }
        public Dictionary<string, string> Fields { get; set; }
        public string File { get; set; }
}

 public ActionResult Send(Model myModel)
{
...
}

我想将数据从 html 发送到我的 Controller :Id, Dictionary<html id,html value>和文件。

此解决方案不起作用:

var dict={
  '[0].Key':'id-one'.
  '[0].Value':'aaaaa'
}
var data = new FormData();
data.append('Id', @Model.Id);
data.append('Fields', dict);
data.append('File',$('#file1')[0].files[0]);

 $.ajax({
            url: '@Url.Action("Send")',
            type: 'POST',
            data: data,
            dataType: 'json',
            contentType: false,
            processData: false,
            complete: function (data) {
            },
            error: function (response) {
            }
        });

此代码适用于文件,但不适用于字典

我该如何解决这个问题?提前致谢!!!

最佳答案

您无法使用 .append() 将对象添加到 FormData,只能添加简单值。您需要单独添加每个名称/值对。

var data = new FormData();
data.append('Id', @Model.Id);
data.append('Fields[0].Key', 'id-one'); // add the dictionary key
data.append('Fields[0].Value', 'aaaaa'); // add the dictionary value
data.append(File, $('#file1')[0].files[0]);
$.ajax({
    ....
});

我假设您实际上想使用 id="id-one" 发布输入的值,在这种情况下它是 data.append('Fields[0].Value' , $('#id-one').val());

此外,正如 Chris Pratt 的回答所述,您发布了文件输入的值,因此您在模型中的属性应该是

public HttpPostedFileBase File { get; set; }

关于c# - 如何使用ajax发送字典和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115810/

相关文章:

javascript - 提交按钮间歇性不提交表单信息

javascript - 如何通过模板中使用的 onclick 函数异步更改模型变量(无需显式刷新)

python - flask + 数据表 : how do you read the AJAX request that DataTables sends as JSON?

asp.net-mvc - %20 后跟斜杠后跟更多数据导致 ASP.NET MVC 3 路由失败?

c# - 开发数学库

C# 和 Linq : Grouping list members according to a list of values

c# - 当文件夹名称的文件已经存在时,如何创建一个空文件夹?

c# - MVC5 异步操作结果。那可能吗?

c# - 数据注释验证在 ASP.NET MVC 3 中不起作用

c# - 如何在Unity.Mvc IoC容器中注册从基类继承的所有类?