如何获取模型列表并将其传递给控制器?我尝试过以下选项,但没有成功。
查看
<table id="AddArtistToEventForm">
<tr>
<th>
@Html.DisplayNameFor(m => m.MenuName)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.HiddenFor(modelItem => item.MenuID)
@Html.DisplayFor(modelItem => item.MenuName)
</td>
<td> @Html.CheckBoxFor(modelItem => item.Active)</td>
</tr>
}
</table>
JQuery的
<script type="text/javascript">
$("#btnSave").click(function () {
var SelectArray = [];
$("#AddArtistToEventForm").each(function () {
var objMenuID = $(this).closest('tr').find('#MenuID').val();
var objMenuName = $(this).closest('tr').find('#MenuName').val();
var objActive = $(this).closest('tr').find('#Active').is(':checked');
var JSONString = { MenuID: objMenuID, MenuName: objMenuName, Active: objActive }
SelectArray.push(JSONString);
});
var Request = $.ajax({
url: "RoleMenu/Save",
data: JSON.stringify({ MenuList: SelectArray }),
contentType: "application/json",
type: 'POST',
cache: false,
async: false
});
alert('done array');
Request.done(function (result) {
alert("done");
});
Request.fail(function (jqXHR, textStatus, errorThrown) {
alert("Insertion fail");
});
});
控制器
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Save(List<MenuModel> MenuList)
{
try
{
bool status = true;
return Json(new { status = true }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { status = false }, JsonRequestBehavior.AllowGet);
}
}
即使它不调用save方法,这个方法是对的吗?感谢。
答案 0 :(得分:0)
当我建立我的时候,我做的有点不同。试试这个
var SelectArray = [];
$("#AddArtistToEventForm").each(function () {
SelectArray.push({
MenuID: $(this).closest('tr').find('#MenuID').val() ,
MenuName: $(this).closest('tr').find('#MenuName').val(),
Active: $(this).closest('tr').find('#Active').is(':checked')
});
});
然后在你的ajax电话中你只需要
data: Json.stringify(SelectArray),