使用AJAX发布列表成员

时间:2016-04-15 13:24:24

标签: jquery ajax

假设我有一个包含项目列表的视图。对于列表我使用的是jquery手风琴。在手风琴的每个DIV中,我有一个Save Changes按钮,打算只保存对列表中该成员的更改。如何构建AJAX调用以仅将该单个模型发送到控制器?手风琴正在填充或重复进行for循环。因此,循环中的每个项目都是Model [I],然后是该特定模型的字段。有没有办法只发送那个模型?我将列表中每个按钮的ID分配给单个模型的ID:

<button id="but+@Model[i].ID" onclick="SaveChanges(this);return false;" class="displaybutton" style="font-size:x-small">Save Changes</button>

function SaveChanges(btn) {
   var id = btn.id.substring(4);
  $.ajax({
    type: 'POST',
    data: @Model[i]  //does not work because there is no way to pass the "i"
    url: '@Url.Action("SaveChanges")'
  });
}

这很有效,因为我可以捕获列表中该成员的字段并将其包含在帖子中。但是我必须从每个字段中提取单个值。我宁愿发送那个模型。有没有办法做到这一点?

我找到了一种方法来传递迭代:

<button id="but+@Model[i].ID" onclick="SaveChanges(this, @i);return false;" class="displaybutton" style="font-size:x-small">Save Changes</button>

在i之前使用“@”并且它通过。现在我需要选择列表的成员。我正在将列表转换为JSON:

list = function () { return @Html.Raw(Json.Encode(Model)) }();

但发布该成员仍然无效:

function SaveChanges(but, numb) {
    var id = but.id;
    id = id.substring(4);
    $.ajax({
        type: 'POST',
        data: { review : list[numb] },
        url: '@Url.Action("SaveMeetingMinutes")',
        success: function (data) {
            var test = data;
            $("#accordion").accordion('option', 'active', false);
        }
    });
    return false;
}

该动作有成员,但它们是空的:

[HttpPost]
    public ActionResult SaveMeetingMinutes(ReviewsModel review)
    {
        Repository.UpdateReview(review);
        return Json(review);
    }

0 个答案:

没有答案