我创建了两个包含不同值的ViewBags
。
ViewBag.attendingEvents = attendingIds;
ViewBag.notAttendingEvent = notAttendingIds;
attendingIds
包含参加事件的所有用户的ID,而notAttendingIds
包含所有未参与的用户的ID 事件。
它向我显示了太多按钮,因为我正在循环播放。如果有100个用户参加该事件,那么它显示100个删除按钮,其中包含一个记录,因为循环。什么是解决这个问题的最佳方法?
@foreach (var user in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => user.Name)
</td>
<td>
@foreach(var record in ViewBag.attendingEvents as IList<User>) {<a href="#"> Remove </a>}
</td>
</tr>
}
答案 0 :(得分:2)
你的问题:
它向我显示了太多按钮,因为我正在循环播放。如果有100个用户参加该事件,那么它显示100个删除按钮,其中包含一个记录,因为循环。什么是解决这个问题的最佳方法?
最佳方法或解决方案:
你遇到了上述问题,因为有一个foreach放置按钮,实际上它不是必需的,你只需更改你的代码如下
@foreach (var user in Model.User)
{
<tr>
<td>
@Html.DisplayFor(modelItem => user.Name)
</td>
<td>
string[] Users_attendingEvents = string[](ViewBag.attendingEvents);
@if(Users_attendingEvents.Contains(user.Id))
{
<a href="#"> Remove </a>
}
</td>
</tr>
}
您还可以查看此链接以获取更多信息:how to use .contains in Viewbag in asp.net mvc
希望有所帮助
由于
答案 1 :(得分:1)
如果我理解您的问题是正确的,并且您只希望参加会议的用户能够拥有删除按钮,那么这是我的解决方案。您需要遍历用户的结果并检查它们是否存在于您的可访问ID列表中。
@foreach (var user in Model.User)
{
<tr>
<td>
@Html.DisplayFor(modelItem => user.Name)
</td>
<td>
@if(ViewBag.attendingEvents.Contains(user.Id))
{<a href="#"> Remove </a>}
</td>
</tr>
}