製品/カテゴリを含むチェックボックスのグリッドを作成したいと考えています。製品とカテゴリは動的である可能性があります (つまり、製品/カテゴリの数は変化する可能性があります)。チェックボックスをオンにすると、グリッドを作成してデータを保存できます。私の問題は、ajax を適切に使用することです。
ここに私のモデルがあります:
public class ProductModel
{
public List<List<ProductItemGrid>> ProductItemGrid { get; set; }
public List<string> ProductNameList { get; set; }
public List<string> CategoryNameList { get; set; }
}
public class ProductItemGrid
{
public int ProductID { get; set; }
public int CategoryID { get; set; }
public bool ProductInCategory { get; set; }
}
私のビューの一部(リストのリストを使用して入力します):
@for (int i = 0; i < Model.ProductNameList.Count(); i++)
{
<tr class=@(i % 2 == 0 ? "even" : "odd")>
<td style="font-weight: bold;">
@Html.DisplayFor(x => x.ProductNameList[i])
</td>
@foreach (var result in Model.ProductItemGrid[i])
{
string ckBoxName = result.ProductID.ToString() + result.CategoryID.ToString();
<td id='<%=ckBoxName%>'>
@using (Ajax.BeginForm("UpdateProductItem", "Product", new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = ckBoxName }))
{
@Html.Hidden("p_CategoryID", result.CategoryID)
@Html.Hidden("p_ProductID", result.ProductID)
@Html.CheckBox("<%=ckBoxName%>", result.ProductInCategory, new { onclick = "test" })
}
</td>
}
</tr>
}
現在、ビューにはいくつかのエラーが含まれていますが、主なアイデアが得られると確信しています。ajax フォームを使用すると、データベースを更新できますが、主な問題は、C# の部分を実行した後にチェックボックス自体を更新することです。また、 < td> に ProductID_CategoryID という名前を付けて ckbox を更新できるように名前を付けようとしています (そのため、どれが更新されているかを簡単に知ることができます)。ありがとう。