Asp.net mvc 向MVC4控制器发送Jquery post时未传递数据
我试图将数据从JQuery传递到MVC4控制器。调用控制器,但不传递任何数据。过去我总是使用表单序列化,但这在这里并不合适。 我的控制器: 我们使用信封类作为所有视图模型的容器 视图模型 最后是javascript 根据Firebug,数据以 调用控制器,但视图模型中的属性始终为null。我试过几个不同的主题,似乎都不管用。Asp.net mvc 向MVC4控制器发送Jquery post时未传递数据,asp.net-mvc,jquery,asp.net-mvc-4,Asp.net Mvc,Jquery,Asp.net Mvc 4,我试图将数据从JQuery传递到MVC4控制器。调用控制器,但不传递任何数据。过去我总是使用表单序列化,但这在这里并不合适。 我的控制器: 我们使用信封类作为所有视图模型的容器 视图模型 最后是javascript 根据Firebug,数据以 调用控制器,但视图模型中的属性始终为null。我试过几个不同的主题,似乎都不管用。 尝试将数据包装成一个文字,名称为信封,以便模型绑定器能够提取数据: data: { envelope: data }, 更新 删除对JSON.s
尝试将数据包装成一个文字,名称为信封,以便模型绑定器能够提取数据:
data: { envelope: data },
更新
删除对
JSON.stringify()
的调用,严格来说没有必要序列化对象文本。这是我尝试的选项之一,还有var envelope={envelope:{SessionStart:{…@AllenJergensen删除JSON.stringify()怎么样
调用并按原样传递数据。我认为没有必要序列化它。感谢渐近错误-问题在于stringify(稍加调整)…var envelope={'SessionStart.SessionId':SessionId,'SessionStart.UserId':UserId,'SessionStart.Message':Message}$.ajax({type:“POST”,url:'/Logging/Write',data:envelope,@AllenJergensen,啊,太好了。我认为像您最初那样嵌套对象会很好,但我可以看到这样显式命名它们会有什么帮助。我会更新我的答案。
public class VideoSessionEnvelope : BaseEnvelope
{
public VideoSessionEnvelope()
{
SessionStart = new VideoSessionStartViewModel();
}
public Guid? LogEntryID { get; set; }
public VideoSessionStartViewModel SessionStart { get; set; }
}
}
public class VideoSessionStartViewModel: IViewModel
{
public string SessionId { get; set; }
public int UserId { get; set; }
public string Message { get; set; }
}
var Logging = Logging || {};
Logging.VideoSession = function () {
var Start = function (sessionId, userId, message) {
var envelope = {
SessionStart: {
"SessionId": sessionId,
"UserId": userId,
"Message": message
}
}
var data = JSON.stringify(envelope);
$.ajax({
type: "POST",
url: "/Logging/Write",
data: data,
datatype: "application/json",
success: function (result) {
return result;
},
error: function (request, status, error) {
return error;
}
});
};
return {
Start: Start
};
}();
JSON
SessionStart Object { SessionId="sessionIdVal", UserId=123, Message="messageValue"}
Message "messageValue"
SessionId "sessionIdVal"
UserId 123
data: { envelope: data },