Я передаю 3 набора данных в представление в модели представления, и у меня возникает проблема, связывающая один из них с двумя другими в моем коде foreach:
Мои таблицы БД:
«ServiceGroups» является родителем «Services»
«Службы» связаны через объединяющую таблицу (с использованием 2 составных первичных ключей) с таблицей aspnet_users (я называю «пользователи»)
Я включил это в модель EF под названием GWServices.edmx
так что теперь у меня есть 3 сущности, связанные так:
ServiceGroup (родитель для) службы
Сервис (много ко многим с) Пользователь
Затем я создал контроллер и видовую модель, подобную этой:
{
public class ServicesViewModel
{
public ServicesViewModel(List<ServiceGroup> servicegroups, List<Service> services, List<User> aspnetusers)
{
this.ServiceGroups = servicegroups;
this.Service = services;
this.AspnetUsers = aspnetusers;
}
public List<ServiceGroup> ServiceGroups { get; set; }
public List<Service> Service { get; set; }
public List<User> AspnetUsers { get; set; }
}
public class ClientServicesController : Controller
{
public ActionResult Index()
{
GWEntities _db = new GWEntities();
var servicegroups = _db.ServiceGroupSet.ToList();
var services = _db.ServiceSet.ToList();
var aspnetusers = _db.UserSet.ToList();
return View(new ServicesViewModel(servicegroups, services, aspnetusers));
}
}
}
Затем я создал представление с 3 циклами foreach, чтобы:
- Получить и представить в виде UL список всех сервисных групп в базе данных (который работал)
- Заполните таблицу в каждой группе услуг, заполнив некоторые данные службы для каждой службы в данной группе (которые также работают)
- Проверьте, связан ли пользователь с этой конкретной службой, если это так, покажите только значок красного креста, в противном случае покажите зеленый значок «выберите меня». (это не заполняет пользователей)
Код выглядит так:
<% foreach (var servgroup in Model.ServiceGroups) { %>
<ul> <%= servgroup.ServiceGroupName%> </ul>
<table>
<% foreach (var serv in servgroup.Service)
{ %>
<tr>
<td class="td1">
<%= serv.ServiceDescription%>
</td>
<td class="td2">
<% = Html.Encode(String.Format("{0:f}",serv.MonthlyPrice)) %>
</td>
<td class="td3">
<%foreach (var user in serv.User) {%>
<%if (user.UserName == User.Identity.Name)
{ %>
<img src="/Content/LightRedCross_2.png" alt="" height="15px" width="15px"/>
<% }
else
{%>
<img src="/Content/LightGreenAdd_2.png" alt="" height="15px" width="15px"/>
<%} %>
<%} %>
</td>
</tr>
<% } %>
</table>
<% } %>
Может кто-нибудь сказать мне, почему foreach (var user в serv.user) не распознает, что «Customer1» (пользователь, вошедший в систему) заказал 6 услуг (как это указано в таблице присоединения)?
Спасибо!
Пол