ASP.NET MVC多个模型在一个视图中

问题描述:

我有以下型号 Patient类:ASP.NET MVC多个模型在一个视图中

public class Patient 
{ 
    public int PatientID { get; set; } 

    public virtual Salutation salutation { get; set; } 
    public int SalutationID { get; set; } 
    public string Surname { get; set; } 
    public string Firstname { get; set; } 
    [Display(Name = "Date of Birth")] 
    [DisplayFormat(DataFormatString="{0:d}", ApplyFormatInEditMode=true)] 
    public DateTime DOB { get; set; } 
    public string RegNo { get; set; } 
    public DateTime RegDate { get; set; } 
    public string Occupation { get; set; } 
} 

VatalSigns类

public class VitalSign 
{ 
    public int VitalSignID { get; set; } 
    public string Sign { get; set; } 
    [Display(Name = "Lower Limit")] 
    public int? LowerHold { get; set; } 
    [Display(Name = "Upper Limit")] 
    public int? UpperHold { get; set; } 
    [Display(Name = "Unit Of Measurment")] 
    public string Units { get; set; } 
} 
存储生命体征为每一个病人

public class PVSign 
{ 

    public long PVSignId { get; set; } 
    [Display(Name = "Patient")] 
    public int PatientID { get; set; } 
    public VitalSign VitalSigns { get; set; } 
    //public IList<VitalSign> VitalSigns { get; set; } 
    public Patient patient { get; set; } 

} 

光伏类

现在我的问题是,我一直没有能够显示一个从输入详细信息ILS。我想选择患者,不同的Vitals标志将会出现,我将把需要的标志保存到PVSign表中。

我厌倦了各种来自网络的样本。您可以从下面的代码中看到,这是索引存根:

public ActionResult Index() 
{ 
    var pVSigns = db.PVSigns.Include(p => p.patient).Include(p => p.PVSignId).Include(p => p.VitalSigns); 
    //var pVSigns = from o in db.Patients join o2 in db.PVSigns 
    //List<object> myModel = new List<object>(); 
    //myModel.Add(db.Patients.ToList()); 
    //myModel.Add(db.VitalSigns.ToList()); 

    //return View(myModel); 
    return View(pVSigns.ToList()); 
} 

如何解决此问题。我是MVC的新手,如果是Webforms,我会一直参与这个项目。

谢谢。

+3

您是否尝试过创建视图模型? –

+0

为什么不把所有的模型封装成一个然后通过它? – jamiedanq

这个(你)的问题没有单一的答案(解决方案)。这取决于你想如何设计/构建/实现你的解决方案。 简单,粗暴的解决方案:只要有一个视图模型为具有作为他的财产类(产品类型)的wraper你做和工作解决这个问题,

public class FullPatientDetailsViewModel 
{ 
    public Patient { get; set;} 
    public List<PVSign> PatientPvSigns { get; set;} // Patien PV Signs 
} 

或者只使用一个PatientViewModel并加载了PVSigns异步与阿贾克斯。 没有简单的最佳解决方案,这完全取决于您想要以更大的图片实现什么目标。

我已经回答了类似的问题here。正如Alexandru所说,最简单最直接的方法就是将模型包裹在ViewModel之内。您可以阅读其他方法来实现此here

+0

谢谢。你的指针告诉我如何处理它。 –