我尝试在表单中创建一组one-to-many
值。虽然this答案可能是我需要的,但根据要求,我无法使用@Html.ListBoxFor
,因为我需要提供每个项目的详细信息,因此最好使用{checkbox
1}}输入选择。
问题是我不知道如何将这些复选框绑定到我的viewmodel中的属性(如果可能的话ICollection<MyType> myItemList
)。
我的View Model
包含所述属性,因此GET Create()
视图可以使用它并显示每个项目的信息属性信息。所以我在POST Create(MyViewModel vm)
遇到麻烦来获取所选值列表(或只是ID)
我该怎么做?
答案 0 :(得分:1)
因此,假设您可以将模型中的属性更改为:
List<MyType> myItemList
我们可以向MyType
添加一个属性来表示选择:
public bool IsSelected { get; set; }
然后你可以这样做:
@for (int i = 0; i < Model.myItemList.Count; i++)
{
@Html.HiddenFor(m => Model.myItemList[i].Id)
@Html.LabelFor(m => Model.myItemList[i].Text)
@Html.CheckBoxFor(m => Model.myItemList[i].IsSelected)
}
注意:我认为Id
是ID,您在上面的代码中有一个名为Text
的文字字段。
然后,要获取所选项目,您的HttpPost
方法将类似于:
public ActionResult YourAction(YourModel Model)
{
var selections = Model.myItemList
.Where(m => m.IsSelected)
.ToList();
//do what you want with those selections
}
答案 1 :(得分:0)
您可以将复选框绑定到这样的列表......
[HttpPost]
public ActionResult MyAction(IEnumerable<int> selectedValues)
<form method="post">
<input type="checkbox" name="SelectedValues[]" value="1"/>
<input type="checkbox" name="SelectedValues[]" value="2" />
<button>Submit</button>
</form>
复选框上的value
属性将是您的ID值