ユーザーがサービスに加入しているかどうかを表示し、それをビューのテーブルに表示する方法が必要です。これまでのところ、ユーザーがサービスに加入しているかどうかは表示できますが、加入していない場合は表示できません。
次のようなビューモデルを作成しました。
public class MyServicesController : Controller
{
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)
句を使用してこのようにフィルタリングすることで、特定の特定のサービスを選択したユーザーのリストからのみ取得しています。
したがって、現時点では、選択されていないサービスを取得し、「まだ購読していません」という文字列を表示して、テーブル内のそのサービスの行にレンダリングする方法がありません。
上記の「ユーザー」変数を取り出して、現在のユーザーがそのサービスに加入しているかどうかの true または false を返すブール関数を作成しようとしました。
public class MyServicesViewModel
{
public bool UsersServices(AspnetUser user)
{
if (user.UserId.ToString() == "35l1cob9-rest_of_user_guid-96975")
return (true);
else
return (false);
}
}
しかし、それをビューに入れる方法を見つけることができず、この方法を試すことで複雑になりすぎていると感じました。
誰でもこれを行うためのより簡単な方法を見ることができますか?
どうもありがとう、
ポール