我有一个对象在我的JavaScript中声明,我想发送到我的控制器。目的是VMInterface
类型,看起来像:未在MVC控制器调用中填充内部对象
public class VMInterface
{
public string Name { get; set; }
public int SourceID { get; set; }
public int ProjectID { get; set; }
public string Description { get; set; }
public VMConnection VMConnection { get; set; }
public List<VMInteraction> Interactions { get; set; }
}
public class VMConnection
{
public string Username { get; set; }
public string Password { get; set; }
public string Connection { get; set; }
}
public class VMInteraction
{
public string Name { get; set; }
public List<VMField> Fields { get; set; }
}
public class VMField
{
public string InputOutput { get; set; }
public string Name { get; set; }
public int DataTypeID { get; set; }
}
我的控制器:
[HttpGet]
public JsonResult UpdateVM(VMInterface vm)
{
return null;
}
我的控制器调用:
$.ajax({
url: '/Admin/UpdateVM',
type: 'GET',
data: {
Name: "Test Name",
Description: "Test Desc",
SourceID: 1,
ProjectID: 4,
VMConnection: {
Connection: "IPAddress goes here",
Username: "Username",
Password: "Password"
},
Interactions: [{
Name: "Method",
Fields: [{
InputOutput: "INPUT OR OUTPUT HERE",
Name: "DROP LOCATION HERE",
DataTypeID: 1
}],
}]
},
success: function (response) {
//Do nothing
}
});
我有双重检查,所有的字段名相匹配并且我VMInterface
课程中的属性全部公开,并且{ get; set; }
。我的电话打在我的控制器上,并且所有顶层(ei Name
,Description
,SourceID
和ProjectID
)字段映射正确。但是,对于我的VMConnection
和Interactions
字段,信息未被填充。
有什么我缺少获得这些正确映射?
您需要字符串化数据 - '数据:JSON.stringify {VM:数据}'和'设置的contentType:“应用/ json','或者使用点符号来命名属性以匹配您的模型,例如'VMConnection.Connection:'IPAddress go here''和'Interactions [0] .Name:'Method'等 –
谢谢您的评论,不幸的是他们都没有工作。第一种方法返回null,第二种方法在Visual Studio中抛出错误 – Novastorm
然后你做得不对! –