モデルがあり、ビューに実装しました。データはコントローラーに渡され、コントローラーのフォーム コレクションを使用して値を取得します。全部で 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>
}