我在函数中有这个代码:
var setTime = selected[0];
var selectedTime = {
ProfessionalUserId: $("#SelectProId").text()
, Date: selectedDate
, SetTime: setTime
, Time: null
};
$.ajax({
type: 'POST',
data: selectedTime,
url: '@Url.Action("SetAvailableAppointments", "ScheduleView")',
dataType: "json",
//contentType: 'application/json',
success: function (result) {
if (data === true) {
$("#successfulAppt").show();
}
},
error: function (err) {
}
})
选择[0] 设置一个表示时间的字符串值,即“11:00:00”或“10:15:00等......
selectedTime 对象与服务器端POCO对象匹配,该对象位于接收方法的签名中。
问题在于,如果我使用 SetTime 属性创建 selectedTime 对象:
var setTime = selected[0];
var selectedTime = {
ProfessionalUserId: $("#SelectProId").text()
, Date: selectedDate
, SetTime: setTime
, Time: null
};
接收方法接收空对象。
如果我以这种方式创建相同的对象 selectedTime :
var setTime = selected[0];
var selectedTime = {
ProfessionalUserId: $("#SelectProId").text()
, Date: selectedDate
//, SetTime: setTime
, Time: null
};
没有 SetTime 属性,接收方法接受该对象。
SetTime 正在设置为字符串值。我已经通过使用chrome开发工具的代码证明了这一步。
这是服务器端对象
public class AvailableTime
{
public DateTime Date
{
get;
set;
}
public TimeSpan Time { get; set; }
public string TimeLiteral
{
get
{
return Time.ToString();
}
}
public string SetTime { get; set; }
public int ProfessionalUserId { get; set; }
}
这是接收方法:
public ActionResult SetAvailableAppointments(AvailableTime setTime)
{
if (setTime == null)
return View();
....
}
答案 0 :(得分:1)
看起来您需要更改ajax调用以这种方式设置参数:
data: { setTime: selectedTime },
这是有效的,因为你的函数参数名为setTime
,并且你创建了一个名为selectedTime
的对象:
var selectedTime = {
ProfessionalUserId: $("#SelectProId").text()
, Date: selectedDate
, SetTime: setTime
, Time: null
};