javascript - 视图中的 Asp.net Master-Detail 对象与 actionresult 中的视图模型不完全匹配
问题描述
我正在尝试使用 Ajax 将对象从 mvc 视图传递给操作结果。但是接收动作结果的对象不包含主对象中的细节对象。这是发布到操作结果的视图中的 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 的新手....
解决方案
推荐阅读
- angular - 在 Angular 英雄之旅中找不到模块“./in-memory-data-service”
- python - 使用python从excel中删除行
- mongodb - 如何在 MongoDB 中执行像垂直查找这样的电子表格?
- flutter - 我想根据 API 响应创建小部件
- ruby-on-rails - RoR:“创建”操作中的未定义方法错误
- c# - IAuthorizationHandler 作为单例给了我线程相关的问题
- razor - 为剃须刀 cshtml 创建一个苗条的组件
- laravel - Laravel spatie权限检查模型内的用户角色
- testing - nestjs 模拟导入模块
- java - 如何避免这个javaservlet登录页面安全问题