假设我有一个包含项目列表的视图。对于列表我使用的是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);
}