我在Facebook上显示与搜索群组相同的搜索结果 enter image description here
我在数据库中有一个名为 CommunityUser 的关系表,其属性为 CommunityID 和 UserID 。
使用部分视图我想显示用户是否已加入该社区/群组,它将显示加入按钮否则如果用户已加入该社区,则会显示离开按钮。
我在我的控制器中编写了IsMember()函数,该函数包含两个参数: CommunityID 和 UserID 。如果该用户ID存在社区ID,则返回true。
public bool IsMember(string UserID, int CommunityID) {
var Membership = db.Users.Include(x => x.CommunityUsers).Where(s => s.Id.Equals(UserID)).Count();
if(Membership>0)
return true;
else
return false;
}
现在我真正需要的是,我想在我的视图类的IF条件中调用此函数。它不允许我在我的视图类上调用此函数。
@if (){
<button>@Html.ActionLink("Leave", "LeaveCommunity", new { id = ViewBag.ComID })</button>
}
else
{
<button>@Html.ActionLink("Join", "joinCommunity", new { id = ViewBag.ComID })</button>
}
答案 0 :(得分:0)
在您的控制器中,您应该有一个返回此视图的方法。所以在这种方法中你可以调用这个函数
public ActionResult Index(string UserID, int CommunityID)
{
var hasMembership = IsMember(serID, CommunityID);
return View(hasMembership);
}
在View it self中,您只需获取刚刚从hasMembership
传递的变量@model
。
@if (Model){
<button>@Html.ActionLink("Leave", "LeaveCommunity", new { id = ViewBag.ComID })</button>
}
else
{
<button>@Html.ActionLink("Join", "joinCommunity", new { id = ViewBag.ComID })</button>
}
注意:创建一些用于将数据传递到视图的DTO类可能是明智的,因为您可能需要在某个时刻将多个值传递给视图。此外,整个条件更具可读性
public SomeDTO {
public bool IsMember {get;set}
public List<Community> Communities {get;set;}
}
public ActionResult Index(string UserID, int CommunityID)
{
var hasMembership = IsMember(serID, CommunityID);
var listOfCommunities = _repo.GetComunities();
var dto = new SomeDTO
{
IsMember = hasMembership,
Communities = listOfCommunities
}
return View(dto);
}
@if (Model.IsMember){
// do or do not something
}