Я пытаюсь передать объект из представления 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 ...