Мне нужен способ показать, подписан ли пользователь на услугу или нет, и отобразить его в виде таблицы. Пока я могу показать, подписан ли пользователь на услугу, но не может показать, когда он не подписан.
Я создал видовую модель, подобную этой:
public class MyServicesController : Controller
{</p>
<pre><code> public ActionResult Index()
{
WillEntities we = new WillEntities();
var servicegroups = we.ServiceGroupSet.ToList();
var services = we.ClientServiceSet.Include("AspnetUser").ToList();
var aspnetusers = we.AspnetUserSet.Include("ClientService").ToList();
return View(new MyServicesViewModel (servicegroups, services, aspnetusers));
}
}
Затем визуализировал таблицу служб следующим образом:
<div id="Services">
<h2>My Services</h2>
<table>
<tr>
<th class="th1">
Service Name
</th>
<th class="th3">
Select / Deselect
</th>
</tr>
</table>
<% foreach (var servgroup in Model.ServiceGroups )
{ %>
<ul> <%= servgroup.GroupName %> </ul>
<table>
<% foreach (var serv in servgroup.ClientService )
{ %>
<tr>
<td class="td1">
<%= serv.Description%>
</td>
<td class="td3">
<%foreach (var user in serv.AspnetUser)
{ %>
<%if (user.UserName.Equals(User.Identity.Name, >StringComparison.OrdinalIgnoreCase))
{ %>
Already subscribed
<% }
else
{%>
<%} %>
<%} %>
</td>
</tr>
<% } %>
</table>
<% } %>
</div>
Отлично работает при извлечении и фильтрации всех пользователей, подписавшихся на эту услугу, а затем проверяет, есть ли текущий пользователь в этом списке.
Но, учитывая такую фильтрацию с использованием предложения <%foreach (var user in serv.AspnetUser)
, я извлекаю only из списка пользователей, которые выбрали конкретную данную услугу.
Таким образом, в настоящее время у меня нет возможности захватить службы unchosen и отобразить строку «Пока не подписано» для отображения в строке этого сервиса в таблице.
Я попытался создать логическую функцию, чтобы вытащить указанную выше переменную "user" и вернуть true или false того, подписан ли текущий пользователь на эту службу:
</p>
<pre><code>public class MyServicesViewModel
{
public bool UsersServices(AspnetUser user)
{
if (user.UserId.ToString() == "35l1cob9-rest_of_user_guid-96975")
return (true);
else
return (false);
}
}
но не смог придумать, как это сделать, и почувствовал, что я слишком усложняю, попробовав этот метод.
Кто-нибудь может увидеть менее сложный способ сделать это?
Большое спасибо,
Пол