0

モデルがあり、ビューに実装しました。データはコントローラーに渡され、コントローラーのフォーム コレクションを使用して値を取得します。全部で 50 のレコードがあり、ページごとに 10 を表示します。問題は、すべてのチェック ボックスをオンにしようとすると、50 個のレコードすべてが選択されることです。しかし、コントローラーで送信すると、フォーム コレクションには現在のページ 10 のレコード ID しかありません。残りのレコードは渡されません。解決策を見つけるか、問題の代替案を提供してください。

       --Controller code
    [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult AssignLibrarian(FormCollection FC, string command)
        {
    foreach (string key in FC.AllKeys)
                {
                    // Process Id Key values
                    if (key == "item.Id")
                    {   
                        string IdValues = FC[key];
                        string[] PartIdArray = IdValues.Split(',');

                        foreach (string str in PartIdArray)
                            PartIdDictionary.Add(i++, str);
                    }
                    if (key == "item.IsSelected")
                    {
                        string SelectedIdValues = FC[key];
                        string[] PartSelectedIdArray = SelectedIdValues.Split(',');

                        for (int PartId = 0; PartId < PartSelectedIdArray.Length; PartId++)
                        {
                            if (PartSelectedIdArray[PartId] == "true")
                            {
                                PartSelectedIdDictionary.Add(j++, PartSelectedIdArray[PartId]);
                                PartId++;
                            }
                            else
                                PartSelectedIdDictionary.Add(j++, PartSelectedIdArray[PartId]);
                        }

                    }
    }
}

意見

   @model IEnumerable<DFM.CMS.Model.PartRequest>  
   @foreach (var item in Model)
    {
        <tr>
            <td style="width: 30px; word-wrap: break-word">
                @Html.DisplayFor(model => item.CPN)
                @Html.HiddenFor(model => item.Id)
            </td>
            <td style="width: 50px; word-wrap: break-word">
                @Html.DisplayFor(modelItem => item.Manufacturer)
            </td>
            <td style="width: 50px; word-wrap: break-word">
                @Html.DisplayFor(modelItem => item.MPN)
            </td>
            <td style="width: 70px; word-wrap: break-word">
                @Html.DisplayFor(modelItem => item.VPLManufacturer)
            </td>
            <td style="width: 100px; word-wrap: break-word">
               @* @Html.DisplayFor(modelItem => item.PartDescription)*@
                @if (item.PartDescription != "" & item.PartDescription != null)
                {

                    if (item.PartDescription.Length > 50)
                    {
                             @:@Html.LabelFor(modelItem => item.PartDescription, (item.PartDescription.Substring(0, 50) + "..."), new { title = item.PartDescription})
                    }
                    else
                    {
                         @:@Html.LabelFor(modelItem => item.PartDescription, item.PartDescription, new { title = item.PartDescription})
                    }
                }
                else
                    {
                @:@Html.DisplayFor(modelItem => item.PartDescription, new { title = item.PartDescription})
                    }
            </td>
            <td style="width: 50px; word-wrap: break-word">
                @Html.DisplayFor(modelItem => item.VPLPackage)
            </td>
            <td style="width: 50px; text-align: center">
                @Html.DisplayFor(modelItem => item.RefDesQuantity)
            </td>
            <td style="width: 40px; word-wrap: break-word">
                @Html.DisplayFor(modelItem => item.Librarian.Name)
            </td>
            <td style="width: 35px; word-wrap: break-word">
                @Html.DisplayFor(modelItem => item.Status)
            </td>
            <td style="width: 85px">
                @if (item.Status == DFM.CMS.Model.PartRequestStatus.Completed)
                {                
                    @Html.TextAreaFor(modelItem => item.Comments, new { rows = 3, cols = 1, disabled = "disabled" })
                }
                else
                {
                    @Html.TextAreaFor(modelItem => item.Comments, new { rows = 3, cols = 1 })
                }
            </td>
            <td style="width: 30px; text-align: center">
                @if (item.Status == DFM.CMS.Model.PartRequestStatus.Completed)
                {
                    @Html.CheckBoxFor(modelItem => item.IsSelected, new { disabled = "disabled" })
                }
                else
                {
                    @Html.CheckBoxFor(modelItem => item.IsSelected,new {@class = "SubCheckBox" })
                }
            </td>
        </tr>
    }
4

0 に答える 0