根据ViewBag传递给控制器的视图显示不同的按钮?
问题描述:
我创建了两个包含不同值的ViewBags
。根据ViewBag传递给控制器的视图显示不同的按钮?
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>
}
答
这是我的解决方案,如果我明白你的问题正确,如果你想只有那些谁参加会议的用户能够有删除按钮。您需要遍历用户的结果并检查它们是否存在于您的可出席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,其实它不是neccessary,你只需更改像下面
@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
希望它可以帮助
感谢
您在视图中使用Viewbag的位置在哪里?你在说什么按钮的代码在哪里? –
我错过了。现在我修改了我的问题。 –
foreach(模型中的var用户)肯定是不正确的。它是否为foreach(Model.User中的var用户)? –