从视图中获取模型列表并传递给Controller

时间:2013-11-19 11:18:32

标签: jquery json asp.net-mvc-4

如何获取模型列表并将其传递给控制器​​?我尝试过以下选项,但没有成功。

查看

<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方法,这个方法是对的吗?感谢。

1 个答案:

答案 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),
相关问题