[英]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.