根据从控制器传递给视图的 ViewBags 显示不同的按钮?
Show different button based upon ViewBags passed to Views from Controller?
我创建了两个包含不同值的 ViewBags
。
ViewBag.attendingEvents = attendingIds;
ViewBag.notAttendingEvent = notAttendingIds;
attendingIds
包含 参加 事件的所有用户的 ID,而 notAttendingIds
包含 [=] 所有用户的 ID 21=]没有参加活动。
因为我正在循环浏览,所以它向我显示了太多按钮。如果有 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>
}
如果我理解你的问题是正确的,并且你只希望参加会议的用户能够使用删除按钮,这就是我的解决方案。您需要遍历用户的结果并检查他们是否存在于您的可参与 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>
}
您的问题:
因为我正在循环浏览,所以它向我显示了太多按钮。如果有 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>
}
您还可以查看此 link 以获取更多信息:how to use .contains in Viewbag in asp.net mvc
希望对您有所帮助
谢谢
我创建了两个包含不同值的 ViewBags
。
ViewBag.attendingEvents = attendingIds;
ViewBag.notAttendingEvent = notAttendingIds;
attendingIds
包含 参加 事件的所有用户的 ID,而 notAttendingIds
包含 [=] 所有用户的 ID 21=]没有参加活动。
因为我正在循环浏览,所以它向我显示了太多按钮。如果有 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>
}
如果我理解你的问题是正确的,并且你只希望参加会议的用户能够使用删除按钮,这就是我的解决方案。您需要遍历用户的结果并检查他们是否存在于您的可参与 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>
}
您的问题:
因为我正在循环浏览,所以它向我显示了太多按钮。如果有 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>
}
您还可以查看此 link 以获取更多信息:how to use .contains in Viewbag in asp.net mvc
希望对您有所帮助
谢谢