MVC 3控制器操作不接受来自JQuery .POST的值

时间:2012-02-29 19:45:34

标签: jquery asp.net-mvc-3 post dialog

即使我可以在http标头中看到我的值发布,控制器也会继续接收值为null,并且在查看完所有后我感到难过。

这是我的观点:

$("#dialog-form").dialog({
            autoOpen: false,
            height: 360,
            width: 350,
            modal: true,
            buttons: {
                "Send Message": function () {
                    if ($('#name').val() == '' || $('#email').val() == '' || $('#message').val() == '') {
                        $('.validation_message').html('required');
                    }
                    else {
                        var model =
                        {
                            Name: $('#name').val(),
                            Email: $('#email').val(),
                            Message: $('#message').val(),
                            ProfileEmail: $('#profile_email').val()
                        };

                        $.post('@Url.Action("SendMessage")', model, function (data) {
                            alert(data);
                        });

                        e.preventDefault();
                        $(this).dialog("close");
                        $('.validation_message').hide();
                    }
                },
                "Cancel": function () {
                    $(this).dialog("close");
                    $('.validation_message').hide();
                }
            }
        });

        $("#button-contact")
            .button()
            .click(function () {
                $("#dialog-form").dialog("open");
            });

我的控制器操作:

[HttpPost]
        [ValidateInput(false)]
        public ActionResult SendMessage(ProfileSendMessageModel message)
        {
            // some code here
                return Content("Your message has been sent!");

        }

模型始终显示null,但标题中的元素具有值。任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:3)

变化:

$.post('@Url.Action("SendMessage")', model, function (data) {
    alert(data);
});

要:

$.post('@Url.Action("SendMessage")', {message: model}, function (data) {
    alert(data);
});

答案 1 :(得分:1)

可能是因为您的参数名为messageProfileSendMessageModel具有名为Message的属性。模型绑定器可能尝试绑定ProfileSendMessageModel.Message而不是整个模型。尝试更改参数名称。