[英]Ajax Posting complex object to MVC controller
我想將一個復雜的對象發布到MVC控制器。
我的代碼發布到控制器
var url = "/admin/addevent"
$.ajax({
type: "POST",
contentType: 'application/json',
dataType: "json",
url: url,
data: MyNewEvent,
success: success
});
function success() {
alert("Success");
}
以下對象將被發布並在控制器上被識別並解析為該對象:
var MyNewEvent = JSON.stringify({
ID: 0,
Name: 'asdasd',
Description: 'Description',
DateTime: new Date().toISOString(),
Owner: 1, Duration: 30,
ReoccuringType: 0
});
以下對象不
var url = "/admin/addevent"
var MyNewEvent = JSON.stringify({
ID: 0,
Name: 'asdasd',
Description: 'Description',
DateTime: new Date().toISOString(),
Owner: 1, Duration: 30,
ReoccuringType: 0,
MembershipType: {
ID: 1,
Name: 'Test'
}
});
C#控制器
[HttpPost]
public JsonResult AddEvent(Event MyNewEvent)
{
return Json(new { Success = true, Description = "Added" });
}
以下是應解析為的Event對象
public class Event
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime DateTime { get; set; }
public User Owner { get; set; }
public User Instructor { get; set; }
public int MaxAttendance { get; set; }
public int Duration { get; set; }
public int ReoccuringType { get; set; }
public MembershipType MembershipType { get; set; }
public Organisation Organisation { get; set; }
}
public class MembershipType
{
public int ID { get; set; }
public string Name { get; set; }
public MembershipType(BO.MembershipType MembershipType)
{
this.ID = MembershipType.ID;
this.Name = MembershipType.Name;
}
}
似乎控制器無法識別MemberShip對象。
謝謝
確定已經解決了這個問題,並且對於任何試圖從我上面提供的細節中解決問題的人來說,您將無法做到。 (我現在已經更新了)。 簡而言之,MembershipType對象需要一個無參數的構造函數,在該構造函數中,只有一個帶有參數的構造函數
public class MembershipType
{
public int ID { get; set; }
public string Name { get; set; }
public MembershipType(BO.MembershipType MembershipType)
{
this.ID = MembershipType.ID;
this.Name = MembershipType.Name;
}
}
當我用提琴手檢查錯誤時,錯誤是來自服務器端的,“沒有為此對象定義無參數構造函數。”一旦我輸入了較少參數的構造函數,它就解決了我的問題。
public class MembershipType
{
public int ID { get; set; }
public string Name { get; set; }
public MembershipType(BO.MembershipType MembershipType)
{
this.ID = MembershipType.ID;
this.Name = MembershipType.Name;
}
public MembershipType()
{
}
}
請嘗試以下。 刪除JSON.stringify函數。
var MyNewEvent = {
ID: 0,
Name: 'asdasd',
Description: 'Description',
DateTime: new Date().toISOString(),
Owner: 1, Duration: 30,
ReoccuringType: 0,
MembershipType: {
ID: 1,
Name: 'Test'
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.