Действие контроллера MVC 3 не принимает значения из JQuery .POST - PullRequest
1 голос
/ 29 февраля 2012

Даже несмотря на то, что я вижу свои значения, размещенные в заголовке http, контроллер продолжает получать значения как нулевые, и я просто озадачен просмотром.

Вот мой вид:

$("#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");
            });

My Controller Action:

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

        }

Модель всегда показывает ноль, но элементы в заголовке имеют значения.Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Изменение:

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

Кому:

$.post('@Url.Action("SendMessage")', {message: model}, function (data) {
    alert(data);
});
1 голос
/ 29 февраля 2012

Вероятно, потому что ваш параметр называется message, а ProfileSendMessageModel имеет свойство с именем Message.Связыватель модели, вероятно, пытается связать ProfileSendMessageModel.Message вместо всей модели.Попробуйте изменить имя параметра.

...