在控制器索引操作中筛选记录



我正试图向索引操作添加一个条件,以便只获取某些记录。故事是这样的。

  1. 注册用户具有所有者或服务公司的身份角色
  2. 有一个Owner表和一个Service Companies表,每个表都有一个RegUserID,它根据该用户的角色保存Identities表中的UserID
  3. 有一个资产表(要编制索引),它有一个OwnerID和一个Service CompanyID字段
  4. 根据登录用户的UserID,我需要识别用户角色,然后使用RegUserID从相关表中获取OwnerID或Service CompanyID,然后根据角色列表列出OwnerID或Services CompanyID的资产

我已经到达…

// GET: Assets
public ActionResult Index()
{
    if(Roles.GetRolesForUser().Contains("Owner") == true)
    {
        // Get OwnerID from Owners table where Owners.RegUserID == User.Identity.GetUserId();
        // Get list of assets from Asstes where Assets.OwnerID == OwnerID
    }
    else if(Roles.GetRolesForUser().Contains("Service Company") == true)
    {
        // Get ServiceCompanyID from Owners table where ServiceCompanies.RegUserID == User.Identity.GetUserId();
        // Get list if assets from Assets where Asstes.ServiceCompanyID == ServiceCompanyID
    }
    return View(assets);
}

我完全纠结于如何获得OwnerID或ServiceCompanyID,然后返回到视图的资产列表。

不确定你的数据库设置等。但根据你的问题,你应该能够做到这一点,而不必担心用户在Linq Query中的"角色",类似于下面的

var userId = User.Identity.GetUserId();    
var asset = from a in context.Assets
    join o in context.Owners on a.OwnerId equals o.OwnerId into oa
    from asst in oa.DefaultIfEmpty()
    join s in context.ServiceCompanies on a.ServiceCompanyId equals s.ServiceCompanyId into sa
    from service in sa.DefaultIfEmpty()
    where asst.RegUserId == userId || service.RegUserId == userId
    select a;
return View(asset);

相关内容

  • 没有找到相关文章

最新更新