1

フォームに複数のチェック ボックスの値があります。フォームをシリアル化し、mvc コントローラーに JSON データとして送信します。チェックボックスの値を逆シリアル化するにはどうすればよいですか?

これは私のhtmlです -

@using (Html.BeginForm("SaveOfficeConfiguration", "Offices", FormMethod.Post, new { Id = "frmOfficeConfigSave" }))
{  
<div id="divOfficeForm">
    <div style="width: auto; height: auto; border: 3px outset silver;">
        <table class="mainsectionable" width="100%">
            <thead>
                <tr>
                    <th style="text-align: center;">
                        <center>KCCM Profile Access</center>
                    </th>
                </tr>
                <tr>
                    <td>
                        @using (Html.BeginForm())
                        {
                            IEnumerable<SelectListItem> Brands = ViewBag.GetBrands;
                            foreach (var item in Brands)
                            {
                            @Html.CheckBox("KCCM_Brands", false, new
                                                        {
                                                            value = item.Value
                                                        });
                            <label>@item.Text</label><br />
                                            }
                                        }
                    </td>
                </tr>
            </thead>
        </table>
    </div>
</div>
}

これは私のJavaScript関数です-

function SaveOfficeConfigNew() {
    var officeID = $('input[name="hdnOfficeID"]').val();
    var url = "/OfficeManagement/Offices/SaveOfficeConfiguration?officeID=" + officeID;
    ShowWait();
    $.ajax({
        type: "POST",
        url: url,
        data: frmOfficeConfigSave.$('input').serialize(),
        success: function (data) {
            HideWait();
            alert(data.msg);
        },
        error: function (data) {
            HideWait();
            alert(data.msg);
        }
    });
    applyFilter();
    return false;
}

これは私のコントローラのアクションです -

[HttpPost]
    public ActionResult SaveOfficeConfiguration(int ? officeID, FormCollection form)
    {
        try
        {
            */..............
              ..............*/
            return Json(new
            {
                success = true,
                msg = String.Empty,
                id = 1

            }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception error)
        {
            return Json(new
            {
                success = false,
                msg = error.Message,
                id = -1
            }, JsonRequestBehavior.AllowGet);

        }
    }
4

3 に答える 3

0

それ以外の

@Html.CheckBox("KCCM_Brands", false, new
{
    value = item.Value
});

このコードを使用してチェックボックスを生成します

<input type="checkbox" name="KCCM_Brands" value="@item.Value" />

コントローラーのアクションは次のようになります

public ActionResult SaveOfficeConfiguration(int? officeID, List<string> KCCM_Brands) 

フォームを投稿するList<string> KCCM_Brandsと、選択したチェックボックスの値のみが入力されます。

また、あなたのjavascriptが正しいかどうかはわかりませんが、動作させるには次の変更を加える必要がありました

data: $('#frmOfficeConfigSave input').serialize()
于 2013-09-20T08:04:09.827 に答える
0

を使用しFormsCollectionて、チェック ボックスの値を取得できます。

コントローラ:

[HttpPost]
public ActionResult SaveOfficeConfiguration(int ? officeID, FormCollection form) 
{
var CheckBoxValues = form["KCCM_Brands"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x=>int.Parse(x));
}

詳細については、こちらをご覧ください: http://www.mindstick.com/Articles/2ee905ba-aea1-4d83-a49d-d8d8fb10c747/?Checkbox%20control%20in%20MVC

于 2013-09-20T07:38:34.493 に答える