【问题标题】:MVC - Send Class in Class To Controller with FormDataMVC - 使用 FormData 将类中的类发送到控制器
【发布时间】:2021-11-30 13:14:14
【问题描述】:

我有 2 节课。并且我在其他类中使用了第一类。

public class Adres
{
    public int? ID { get; set; }
    public string Sehir { get; set; }
    public string Ilce { get; set; }
    public string Mahalle { get; set; }
    public string Sokak { get; set; }
}

public class User
{
    public int? ID { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public Adres UserAdres { get; set; }
}

我在Controller中有这个功能

public ActionResult Kaydet(Users.User prm_query)
{
    int? ID = prm_query.ID;
    string UserName = prm_query.UserName;
    string Sehir = prm_query.UserAdres.Sehir;
    
   .....
}

当我使用 JQuery 发布数据时,我正在使用此代码并且它运行良好。

$.post("/Users/Kaydet",
{
  ID: 1,
  UserName: 'Emre',
  Password: '112233',
  UserAdres: { ID: 1, Sehir: 'Istanbul', Ilce: 'Kadikoy', Mahalle: 'Kemal', Sokak: 'Yok' }
},
function (Result) {

   // .....
});

但我想用 FormData 发送这些数据,我正在尝试这个,但它不起作用。

var formdata = new FormData();
formdata.append('ID', 1);
formdata.append('UserName', 'Emre');
formdata.append('Password', '112233');
formdata.append('UserAdres', { ID: 1, Sehir: 'Istanbul', Ilce: 'Kadikoy', Mahalle: 'Kemal', Sokak: 'Yok' });

$.ajax({
   type: 'POST',
   url: '/Users/Kaydet',
   dataType: 'json',
   processData: false,
   contentType: false,
   data: formdata
}).done(function (Result) {

   // ...

});

当我在控制器用户名中运行此代码时,密码即将到来,但 UserAdres 总是为空。如何使用 FormData 发布这个子类?

【问题讨论】:

    标签: class model-view-controller subclass form-data


    【解决方案1】:

    我想出了怎么做。如果我这样写,它会在 Controller 端无缝匹配。但我无法解决我在下面写的另一个问题

    formdata.append('UserAdres.ID', 1).val());
    formdata.append('UserAdres.Sehir', 'Istanbul').val());
    formdata.append('UserAdres.Ilce', 'Kadikoy').val());
    

    但是如果子类是下面这样的列表,我找不到如何将它添加到表单数据中

    public class User
    {
       public int? ID { get; set; }
       public string UserName { get; set; }
       public string Password { get; set; }
       public List<Adres> UserAdres { get; set; }
    }
    

    我试过了,但没用,在控制器端不匹配

    $.each($('#cmb_modal_user_citys').val(), function (i, Item) { 
       formdata.append('UserAdres.ID', i).val());
       formdata.append('UserAdres.Sehir', 'Sehir-' + i).val());
       formdata.append('UserAdres.Ilce', 'Ilce-' + i).val());  
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      相关资源
      最近更新 更多