Ajax Post:ASP.NET MVC动作正在接收空对象

时间:2016-08-07 05:37:41

标签: ajax asp.net-mvc asp.net-mvc-partialview

我有这样的表格:

@model CupCakeUI.Models.CupCakeEditViewModel
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "createFrm" }))
{
    <div class="form-group">
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            <input  type="text" id="Name" name="Name" value="@Model.Name" />
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model)
        </div>
        <div class="editor-field">
            <input type="text" id="Price" name="Price" value="@Model.Price" />
        </div>
        <div class="col-md-offset-2 col-md-10">
            <input type="button" id="btnCreate" value="Create" class="btn btn-default" />
        </div>
    </div>
}

我正在尝试使用ajax post将数据发送到Action Method,但是它总是接收空对象。我过去曾多次这样做,现在我尝试了不同的方法,但代码:

$(document).ready(function () {
    $("#btnCreate").click(function () {
        var name = $("#Name").val();
        var price = $("#Price").val();
        var cupCakeEditModel = { "CupCakeId": 0, "Name": name, "Price": price };
        var json = JSON.stringify(cupCakeEditModel);
        $.ajax({
            type: 'POST',
            url: "/CupCake/Create",
            data: JSON.stringify(cupCakeEditModel),
            contentType: 'application/json',
            success: function () {
                alert("succes");
            },
            error: function () {
                alert("error");
            }
        });
    })
})

在记录时它在控制台中显示: https://stackoverflow.com/a/27624927/6006588

这是使用的操作方法和类:

[HttpPost]
public JsonResult Create (CupCakeUI.Models.CupCakeEditViewModel cupCakeEditModel)
{
    var cupCake =  
    CupCakeData.Save(cupCakeEditModel);
    return Json("cupCake", 
    JsonRequestBehavior.AllowGet);
 }

这个班:

public class CupCakeEditViewModel
{
    public int CupCakeId;
    [Display(Name = "CupCake Name")]
    public string Name;
    public string Price;
}

我也使用了这个,但没有用:

$("#btnCreate").click(function () {
    var cupCakeEditModel = 
    $("#createFrm").serialize();
    $.ajax({
        url: "/CupCake/Create",
        type: "POST",
        data: cupCakeEditModel,
        success: function (response) {
            alert("Success");
        },
        error: function (response) {
        }
    });
})

我在论坛上找到了几个答案,但这看起来很奇怪!

1 个答案:

答案 0 :(得分:3)

您的模型仅包含字段,public class CupCakeEditViewModel { public int CupCakeId { get; set; } [Display(Name = "CupCake Name")] public string Name { get; set; } public string Price { get; set; } } 不绑定字段,仅绑定属性。将模型更改为

io_service