我有一個對象在我的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
然後你做得不對! –