2017-06-02 42 views
0

我創建了兩個包含不同值的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> 
} 
+0

您在視圖中使用Viewbag的位置在哪裏?你在說什麼按鈕的代碼在哪裏? –

+0

我錯過了。現在我修改了我的問題。 –

+0

foreach(模型中的var用戶)肯定是不正確的。它是否爲foreach(Model.User中的var用戶)? –

回答

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> 
} 
1

您的問題:

它顯示了我太多的按鈕,因爲我通過循環。如果有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

希望它可以幫助

感謝

相關問題