Asp.net mvc 向MVC4控制器发送Jquery post时未传递数据

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

我试图将数据从JQuery传递到MVC4控制器。调用控制器,但不传递任何数据。过去我总是使用表单序列化,但这在这里并不合适。

我的控制器:

我们使用信封类作为所有视图模型的容器

视图模型

最后是javascript

根据Firebug,数据以

调用控制器,但视图模型中的属性始终为null。我试过几个不同的主题,似乎都不管用。

尝试将数据包装成一个文字,名称为信封,以便模型绑定器能够提取数据:

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 },