questionを参照して、選択した値をcheckbox
のデータベースに投稿する方法を学習しました。HttpPostを実行してデータベースにチェックボックスの選択値を格納する
のため、selected
の値はdebug
になりません(下記のスナップショットを参照)。ここで
は私のコードです:
Model:
public class ProductModel
{
public string ProductId { get; set; }
public string ProductName { get; set; }
public bool Selected { get; set; }
public string[] CheckedColumn { get; set; }
}
View:
@model IEnumerable<DemoApp.Models.ViewModels.ProductModel>
@{
ViewBag.Title = "CheckView";
}
<table>
<tr>
<th>
ProductId
</th>
<th>
ProductName
</th>
<th>
Selected
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ProductId)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductName)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.Selected)
</td>
</tr>
}
</table>
@using (Html.BeginForm())
{
<div>
<input type="submit" name="AddResult" value="CheckView"/>
</div>
}
Controller:
[HttpGet]
public ActionResult CheckView()
{
DatabaseEntities db = new DatabaseEntities();
var prodList = from b in db.SysUser3
select new ProductModel
{
ProductId = b.ProductId,
ProductName = b.ProductName,
Selected = b.SelectedProducts
};
var p = prodList.ToList();
return View(p);
}
[HttpPost]
public ActionResult CheckView(FormCollection collection)
{
try
{
ProductModel model = new ProductModel();
// Get all the selected checkboxlist, do db insertion
model.CheckedColumn = collection["CheckView"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
return RedirectToAction("Index");
}
catch
{
return View();
}
}
ここ
私は私のビューまたはコントローラで間違った何かをやっているプロジェクト
を実行している間、私が撮ったスナップショットのいくつかはありますか?誰か助けてくれますか?
あなたが言及したコードの最初のブロックは、HttpGetメソッドですか? –
質問の更新コードを確認してください。私はHttpGetメソッドも含めました –
最初のものはhttpgetではありません。私のコードを試しましたか? –