用我的用户ID显示消息 - 它不会显示它

时间:2016-01-25 22:16:13

标签: asp.net-mvc linq

现在我正在努力为网站创建一个消息传递系统,但当我不得不将它发送给我和我时,它将不会在页面上显示内容。

如果我说它应该只接受其中一个,那么请接受它,这非常好。

这里出错了

[HttpGet]
public ActionResult besked(int id)
{
    DataLinqDB db = new DataLinqDB();
    UnderviserViewModel Model = new UnderviserViewModel();

    //Brugerid :)
    int userid = Helper.BrugerInformation.SessionVale.SessionBrugerid();

    //Det som er blevet sendt til mig!
    var ViewBeskederFrom = db.MessageTeachers.Where(i => i.id == id && i.fk_userTo == userid || i.fk_userFrom == userid).ToList();
    if (ViewBeskederFrom != null)
    {
        Model.BeskederFrom = ViewBeskederFrom.ToList();
    }
    else
    {
        return RedirectToAction("Indbakke");
    }

    return View(Model);
}

如果我这样做,它可以正常工作。

var ViewBeskederFrom = db.MessageTeachers.Where(i => i.id == id && i.fk_userTo == userid || i.fk_userFrom == userid).ToList();

如果我是邮件结束的发件人或收件人,它怎么会不呈现呢?

这里的数据库(我有316个用户ID) enter image description here

更新

[HttpGet]
public ActionResult besked(int id)
{
    DataLinqDB db = new DataLinqDB();
    UnderviserViewModel Model = new UnderviserViewModel();

    //Brugerid :)
    int userid = Helper.BrugerInformation.SessionVale.SessionBrugerid();

    //Det som er blevet sendt til mig!
    var ViewBeskederFrom = db.MessageTeachers.FirstOrDefault(i => i.id == id);
    if (ViewBeskederFrom != null)
    {
        List<MessageTeacher> list = db.MessageTeachers.Where(i => i.id == id && i.fk_userTo == userid || i.fk_userFrom == userid).ToList();
        if (list != null)
        {
            Model.BeskederFrom = list.ToList();
        }
    }
    else
    {
        return RedirectToAction("Indbakke");
    }

    return View(Model);
}

enter image description here

1 个答案:

答案 0 :(得分:2)

因为您有 AND 条件

 i.fk_userTo == userid && i.fk_userFrom == userid

这意味着您需要包含fk_userTofk_userFrom列的记录具有相同的userId值。从你的截图中你没有这样的记录。

您应该执行 OR 条件,该条件会向您发送您发送的邮件或其他用户发送给您的邮件

i.fk_userTo == userid || i.fk_userFrom == userid

此外,您的第一个if条件(检查记录id值与动作方法的id参数)可能只会给您一条记录,假设id是表的主键。因此,您在ViewBeskederFrom变量中获得的结果将是List,最多只有一条记录。