1

我在 MVC 中有任务系统。我给很多用户一个相同的任务或不同的任务。我显示标题、描述、开始日期、完成日期以及谁在/正在执行任务。这些在 grid.mvc 中显示视图页面。但是当我登录时,我可以看到每个任务。我不想每个任务我只想看到我的任务。当然,其他用户会看到他们的任务。

在我的控制器中,我拆分名称。

这是我的代码,

控制器:

TicketDbContext db = new TicketDbContext();

    public ActionResult Index()
    {       


        var result = db.Missions.OrderByDescending(x=>x.GivenDate).ToList();

        string ad = string.Empty;
        foreach (var item in result)
        {
            if (!string.IsNullOrEmpty(item.GivenUsers))
            {
                string[] Ids = item.GivenUsers.Split(',');

                for (int i = 0; i < Ids.Length; i++)
                {
                    int id = Convert.ToInt32(Ids[i]);
                    item.GivenUsers += db.Users.FirstOrDefault(x => x.Id == id).Name+ " " + db.Users.FirstOrDefault(x => x.Id == id).Surname+ ",";
                } 
            }               

        }

        return View(result);

    }

我的网格截图

在此处输入图像描述

4

1 回答 1

1

首先,我建议您将分配的用户 ID 保存在单独的表中

这是可以处理你的情况..

var currentUserId = "";// set current userId from Where are you holding (session,identity etc..)
var result = db.Missions.OrderByDescending(x=>x.GivenDate).ToList();
result = result.Where(x=> x.GivenUsers.Split(',').Contains(currentUserId));
    foreach (var item in result)
    {
        if (!string.IsNullOrEmpty(item.GivenUsers))
        {
            int[] Ids = Array.ConvertAll(item.GivenUsers.Split(','),
                                      delegate(string s) { return int.Parse(s); }) ;
            string[] names = db.Users.Where(u => Ids.Contains(u.Id)).Select(u => u.Name+ " " + u.Surname).ToArray();
            item.GivenUsers = string.Join(",",names);

        }               

    }
于 2017-03-28T11:28:07.307 回答