[英]How do I get a list of checkbox values to post to my controller
我有一個帶有復選框列表的視圖。 它顯示得很好,但在 Post 上,我的列表的 count=0。 我在 SO 上看到了一堆帖子,它們都說同樣的話,我試過了,但它不起作用,所以我一定遺漏了一些東西。
我的視圖模型:
public class ParentViewModel
{
public ParentViewModel()
{
ClassOfTradeList = new List<CheckBoxListItem>();
}
public string Name { get; set; }
public List<CheckBoxListItem> ClassOfTradeList { get; set; }
}
public class CheckBoxListItem
{
public long Id { get; set; }
public string Name { get; set; }
public bool IsSelected { get; set; }
}
然后我的觀點:
@model app.Models.ViewModels.ParentViewModel
// other parent fields
@for (int i = 0; i < Model.ClassOfTradeList.Count; i++)
{
@Html.CheckBoxFor(m => m.ClassOfTradeList[i].IsSelected)
@Html.HiddenFor(m => m.ClassOfTradeList[i].Id)
@Html.LabelFor(m => m.ClassOfTradeList[i].IsSelected, Model.ClassOfTradeList[i].Name)
<br />
}
我在 controller 的帖子:
public ActionResult ParentReturn(ParentViewModel model)
{
}
我的得到:
[HttpGet]
public ActionResult Parent()
{
var model = new ParentViewModel();
//fill in properties here
model.ClassOfTradeList = ClassOfTradeList();
return View(model);
}
private List<CheckBoxListItem> ClassOfTradeList()
{
var classofTrades = _tradeRepo.GetAll().Where(c => c.IsDeleted == false).ToList();
var classOfTradeList = new List<CheckBoxListItem>();
classOfTradeList = classofTrades.Select(c => new CheckBoxListItem
{
Name = c.Name,
Id = c.Id
}).ToList();
return classOfTradeList;
}
所以當我回到 controller 時,model.ClassOfTrades.Count = 0。 我錯過了什么?
我想到了。 當我第一次嘗試解決這個問題時,我說:
@Html.HiddenFor(m => m.ClassOfTradeList)
在視圖的開頭。 它稍后在視圖中覆蓋了我對 id 的 hiddenfor。
感謝你的幫助。 因此,刪除它並保留我發布的代碼使其工作。
您可能應該使用“Model.ClassOfTradeList[i].Name”而不是 Id。
@using (Html.BeginForm("ParentReturn", "Home", FormMethod.Post))
{
for (int i = 0; i < Model.ClassOfTradeList.Count; i++)
{
@Html.CheckBoxFor(model => Model.ClassOfTradeList[i].IsSelected);
@Html.HiddenFor(model => Model.ClassOfTradeList[i].Name);
@Html.LabelFor(model => Model.ClassOfTradeList[i].IsSelected, Model.ClassOfTradeList[i].Name);
<br />
}
<input type="submit" value="click" />
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.