Asp.net Master-Detail объект представления не обрабатывается полностью с моделью представления в actionresult - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь передать объект из представления mvc в результат действия с Ajax.Но объект, который получает результат действия, не содержит подробный объект в главном объекте.Вот код JavaScript в представлении, которое публикует результат действия:

Представление Javascript

        $('#save').click(function () {

            var Details = {
                "Id": "",
                "IdGsm": "",
                "IdCarrier": "",
                "PortName": "",
                "Status": "",
                "CarrierName": ""
            }
            var Carrier = {
                "Id": "",
                "CarrierName": "",
                "MobileNetworkCode": "",
                "MobileCountryCode": "",
                "CountryCode": "",
                "InNetworkCost": "",
                "OutNetworkCost":""
            }
            var Encoding = {
                "Id": "",
                "Description":""
            }

            var GsmViewModel = {
                "Id": "0",
                "Nombre": "0",
                "Ip": "0",
                "Puerto": "",
                "Usuario": "",
                "Password": "",
                "IdEncoding": "",
                "Estado": "",
                "Modelo": "",
                "Details": [],
                "Carrier": [],
                "Encoding": []
            }

            GsmViewModel.Encoding.push(Encoding);
            GsmViewModel.Carrier.push(Carrier);

            GsmViewModel.Id = 0;
            GsmViewModel.Nombre = $('#nombre').val();
            GsmViewModel.Ip = $('#ip').val();
            GsmViewModel.Puerto = $('#puerto').val();
            GsmViewModel.Usuario = $('#usuario').val();
            GsmViewModel.Password = $('#password').val();
            GsmViewModel.IdEncoding = $('#encoding option:selected').val();
            GsmViewModel.Estado = 1;
            GsmViewModel.Modelo = $('#modelo').val();

            var oTable = $('#dt').dataTable().fnGetData();
            for (var i = 0; i < oTable.length; i++) {


                if ($('h2').text() == "Nuevo GSM Gateway") {
                    Details.Id = $('#Id').val();
                }
                else {
                    Details.Id = 0;
                }
                Details.Id = oTable[i][0];
                Details.IdGsm = oTable[i][1];
                Details.IdCarrier = oTable[i][2];
                Details.CarrierName = oTable[i][3];
                Details.PortName = oTable[i][4];
                Details.Status = oTable[i][5];

                GsmViewModel.Details.push(Details);



            }

            });
            tbl.rows().every(function () {
                var data = this.data();

                Details.Id = 0;
                Details.IdGsm = 0;
                Details.IdCarrier = data[2];
                Details.CarrierName = data[3];
                Details.PortName = data[4];
                Details.Status = data[5];

                GsmViewModel.Details.push(Details);
            });

           //Ajax call to the controller, here the GsmViewModel is correctly fulfilled.

            $.ajax({
                url: '/Gsm/SaveGsm',
                data: JSON.stringify(GsmViewModel),
                type: 'POST',
                contentType: 'application/json;',
                dataType: 'json',
                success: function (result) {

                    if (result.Success == "1") {
                        //do some things
                    }
                    else {
                        alert(result.ex);
                    }
                }
            });

        });

Вот код в результате действия и модели, в то время какотлаживая результат действия, я вижу, что свойства в главном объекте назначены правильно, но подробный список пуст, хотя в представлении я вижу, что объект выполнен правильно.Некоторые как в середине детали теряются.Мое лучшее предположение состоит в том, что объект не соответствует, но я проверял структуру модели и объекта, и они совпадают.

Результат действия

  [HttpPost]
    public ActionResult  SaveGsm(GsmViewModel  gsmConfig)
    {

        //do some stuff with the model, the problem here is that the model doesn't contain the details
        return RedirectToAction("ListaGsm", "Gsm");
    }

Просмотр модели

public class GsmViewModel
{

    public int Id { get; set; }

    public string Nombre { get; set; }

    [Required]
    [Display(Name = "Dirección IP")]
    public string Ip { get; set; }

    [Required]
    [Display(Name = "Puerto")]
    public string Puerto { get; set; }

    [Required]
    [Display(Name = "Usuario")]
    public string Usuario { get; set; }

    [Required]
    [Display(Name = "Contraseña")]
    public string Password { get; set; }

    [Required]
    [Display(Name = "Encoding")]
    public Nullable<int> IdEncoding { get; set; }



    public Nullable<bool> Estado { get; set; }

    public string Modelo { get; set; }

    public List<GsmDetail> Details { get; set; }
    public List<Carrier> Carrier { get; set; }
    public IEnumerable<Encoding> Encoding { get; set; }
}

Заранее спасибо, и извините за мой английскийи мой код, я новичок в JavaScript ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...