4

Jquery ajax ポスト リクエストが null json オブジェクトを mvc コントローラにポストしています。なぜこれが考えられるのでしょうか?

乾杯

これが私のモデルです

public class CommentModel
    {
       public string EmailAddress { get; set; }
       public string Name { get; set; }
       public int ActivityId { get; set; }
       public string CommentText { get; set; }

    }

コントローラ

 [HttpPost]
        public ActionResult Index(CommentModel commentModel)
        {

            int i = commentModel.ActivityId;
            string k = commentModel.CommentText;

          return View();
        }

JQuery

$("#CommentForm").submit(function () {

        var formDataAsJson = GetFormDataAsJson();

        $.ajax({
            url: $(this).attr("action"),
            dataType: 'json',
            type: "POST",
            data: JSON.stringify({ commentModel: formDataAsJson }),
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                $("#commentsection").append(data);
            }
        })
    });

function GetFormDataAsJson() {

    var emailInput = $("#InputEmailAddress").attr("value");
    var name = $("#InputName").attr("value");
    var comment = $("#some-textarea").attr("value");
    var activityid = parseInt($("#ActivityID").attr("value"));

    var formObject = {
        EmailAddress: emailInput,
        Name: name,
        ActivityId: activityid,
        CommentText:comment
    }

    return formObject;
}
4

2 に答える 2

5

強く型付けされたヘルパーを使用する場合は、mvc でモデルに変換します。js モデルを作成する必要はありません。

強く型付けされたビュー

@model CommentModel
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "form1" }))
{
    @Html.TextBoxFor(x => x.EmailAddress)
    @Html.TextBoxFor(x => x.Name)
    ...
}

脚本

$(function () {
    $('form').submit(function () {
        if ($(this).valid()) {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                beforeSend: function () {

                },
                complete: function () {

                },
                success: function (result) {

                },
                error: function () {

                }
            });
        }
        return false;
    });
});

コントローラ

[HttpPost]
public ActionResult Index(CommentModel commentModel)
{
    int i = commentModel.ActivityId;
    string k = commentModel.CommentText;

    return View();
}

同じ質問と別の提案

于 2013-02-04T10:08:04.083 に答える
0

追加するだけです:

return false;

送信機能の最後に。

于 2013-02-04T10:25:01.073 に答える