checkbox用于LINQ表达式
本文关键字:表达式 LINQ 用于 checkbox | 更新日期: 2023-09-27 17:59:04
在查询数组中的数组时,我有点不知所措。我的模型包括以下内容:
(安排)>(InterestedPlayers,JustPlayId)>(Name,Id)
在代码中,我有一些按钮触发foreach循环中的模式:
foreach (var item in Model.Arrangements)
{
...
}
现在我想列出感兴趣的玩家的名字,每个人都有一个复选框。所以我尝试了这个表达:
Html.CheckBoxFor( m => m.Arrangements
.Where(x => x.JustPlayId == item.JustPlayId)
.Select(e => e.InterestedPlayers.Select(c => c.Name))
)
有什么建议吗?
Html.CheckBoxFor需要绑定布尔属性,而不是像Name这样的字符串属性。您应该在Model中创建一个类似IsSelect的bool属性。
(安排)>(InterestedPlayers,JustPlayId)>(Name,Id)
InterestedPlayers=>名称(字符串),IsSelect(布尔)
例如,试试这个:
int i = 0, j = 0;
foreach (var item in Model.Arrangements)
{
foreach(var player in item.InterestedPlayers)
{
Html.CheckBoxFor(m => m.Arrangements[i].InterestedPlayers[j].IsSelect)
Html.LabelFor(m => m.Arrangements[i].InterestedPlayers[j].Name)
j++;
}
j = 0;
i++;
}
try this.
@foreach (var item in Model.Arrangements){
<div id="playersname">
<%: item.InterestedPlayers.Name%>
<%:Html.CheckBoxFor(model => Arrangements.InterestedPlayers.Name, new { id = "InterestedPlayersname" })%>
</div>
并使用jquery获取感兴趣玩家的所有选定名称
上面已经发布了一些很好的解决方案,但我想我会在这期间发布我的想法,改为使用html.checkbox。
@using (Html.BeginForm("MoveToOverFlow", "JustPlay", new {id = Model.Id, slug = Model.Slug}))
{
foreach (var player in item.InterestedPlayers)
{
@player.Name
@Html.CheckBox("PlayerId", new { value = player.Id})
@Html.SubmitButton(">>>>>>",true,new {@class = "btn btn-primary"})
}
}
这会将一个列表发送回控制器,如果勾选了复选框,则该列表具有玩家的id,如果未勾选