从ViewModel到Controller ViewBag的LINQ查询,以显示在视图的SelectList中
本文关键字:显示 视图 SelectList 查询 ViewModel Controller ViewBag LINQ | 更新日期: 2023-09-27 18:12:42
我正在学习MVC的过程中,它被证明是一个相当令人钦佩的敌人,看到我是如何习惯web表单的。
我可以在web表单中做很多事情,我似乎无法在MVC中复制,如果我可以,我在实际实现它时就会迷路。但我的问题是:
我有一张表
public partial class Patient
{
public Patient()
{
this.PatientHousings = new HashSet<PatientHousing>();
}
public Guid ID {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public bool Incarcerated {get;set;}
public bool Released {get;set;}
public bool Deceased {get;set;}
public virtual ICollection<PatientHousing> PatientHousings {get;set;}
}
这是另一张表
public partial class PatientHousing
{
public Guid ID {get;set;}
public Guid PatientID {get;set;}
public bool CurrentPrevious {get;set;}
public string Building {get;set;}
public virtual Patient Patient {get;set;}
}
好的,所以在web表单中,我只需将下拉列表绑定到具有适当查询的数据源。这在MVC中是做不到的,我必须使用控制器我现在还在用控制器把脑袋往墙上撞
我读到我需要创建一个ViewModel来帮助我做到这一点,所以我创建了以下
public class PatientViewModel
{
public List<Patient> patients {get;set;}
public PatientViewModel(){
DATAEntities db = new DATAEntities();
patients = db.Patients.Include(r => r.PatientHousings.Where(h => h.CurrentPrevious == true)).Where(x => x.Incarcerated == false && x.Released == false && x.Deceased == false && !string.IsNullOrEmpty(x.LastName)).ToList();
}
}
现在我得到这个错误
Include路径表达式必须引用在该类型上定义的导航属性。引用导航属性使用点点路径,集合导航属性使用Select操作符。
谁来帮帮我。我现在很迷茫,一点都不好笑。
澄清一下:我需要做的是,在视图中创建一个选择列表,列出所有未被监禁、释放或死亡的患者。
我认为你不能在Include中使用'where',因为它不是允许的导航属性之一。
https://msdn.microsoft.com/en-us/library/gg671236 (v = vs.103) . aspx
是否有办法定义。where inside .Include
您可以尝试使用Select或没有它的表达式,然后使用Where进一步过滤。