现在我正在努力为网站创建一个消息传递系统,但当我不得不将它发送给我和我时,它将不会在页面上显示内容。
如果我说它应该只接受其中一个,那么请接受它,这非常好。
这里出错了
[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();
如果我是邮件结束的发件人或收件人,它怎么会不呈现呢?
更新
[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);
}
答案 0 :(得分:2)
因为您有 AND 条件
i.fk_userTo == userid && i.fk_userFrom == userid
这意味着您需要包含fk_userTo
和fk_userFrom
列的记录具有相同的userId
值。从你的截图中你没有这样的记录。
您应该执行 OR 条件,该条件会向您发送您发送的邮件或其他用户发送给您的邮件
i.fk_userTo == userid || i.fk_userFrom == userid
此外,您的第一个if条件(检查记录id
值与动作方法的id
参数)可能只会给您一条记录,假设id是表的主键。因此,您在ViewBeskederFrom
变量中获得的结果将是List,最多只有一条记录。