【问题标题】:How to Send json object with fromdata to mvc controller如何将带有表单数据的 json 对象发送到 mvc 控制器
【发布时间】:2019-06-13 10:38:39
【问题描述】:

我正在向 mvc 控制器发送 formdata 数据对象。我在控制器中收到了数组,但对象总是丢失。查了很多都没找到线索。

我尝试发送整个对象或将每个值附加到formdata,但它始终为空。 formdata 接受吗?嵌套对象。

我的 jQuery 代码:

 function addstudent() {
       var form= $("#studentform").valid();
        if (form)
        {

            personfood.details.firstname = $("#firstname").val();
            personfood.details.lastname = $("#lastname").val();
            personfood.details.imageuploaded = $("#imageupload")[0].files[0];
            personfood.details.rememberme = $("#rememberme").is(":checked");
            personfood.details.newsletter = $("#newsletter").is(":checked");
            personfood.details.gender = $("input[name='gender']").val();

            var personfoods = new FormData();

            $.each(personfood.details, function (key, value) {
                personfoods.append(key, value);
            });
            $.each(personfood.foodname, function (key, value) {
                personfoods.append("foodname["+[key]+"]", value);

            });

            for (var pair of personfoods.entries()) {
                console.log(pair[0] + ', ' + pair[1]);
            }

            $.ajax({
                url: "/Main/addperson",
                type: "POST",
                processData: false,
                cache: false,
                contentType: false,
                dataType: "json",
                data: personfoods,
                success: onsucessinsert,
                error:onerrorinsert
            })

        }

我的视图模型

 public class personfoods
 {
    public details details { get; set; }
    public List<string> foodname { get; set; }
 }

details模特:

public class details
{
    public int id { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
    public string imagename { get; set; }
    public string imageshorturl { get; set; }
    public string imagefullurl { get; set; }
    public bool rememberme {get;set;}
    public bool newsletter { get; set; } 
    public string gender { get; set;}
    public HttpPostedFileBase imageuploaded { get; set; }
} 

【问题讨论】:

  • 你试过data:JSON.stringify(personfoods);吗?
  • 是的,尝试过 data:JSON.stringify(personfoods);和数据:JSON.stringify(personfoods.details);
  • 你能分享你的屏幕吗?
  • @TanvirArjel 我正在控制器中检查它,我可以看到一个 foodname 数组,但 details 对象始终为空?似乎我无法附加对象 formdata?
  • 耶!你在这里遗漏了一些东西!需要调试。

标签: c# jquery asp.net-mvc model-binding


【解决方案1】:

ContentType 应该是 ''application/json; charset=utf-8" 并且您不能像现在这样发布文件。我认为 data:JSON.stringify(personfoods); 应该适用于其余属性。

【讨论】:

  • 请注意,我也在发送带有 json 的图像,这就是我使用 formdata 的原因
  • 您当然可以使用 ajax 发送文件,但不能以 json 格式发送
【解决方案2】:

我使用 $.each 并将键值对附加到我的表单数据来解决它。

$.each(personfood.details, function (key, value) {
                personfoods.append("details[" + key + "]",value);
            });

【讨论】:

    猜你喜欢
    • 2019-09-22
    • 1970-01-01
    • 2014-10-31
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多