2016-04-22 5 views
1

У меня есть следующие модели Класс пациента: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; } 
} 
класс

PV, который хранит показатели жизненно важных функций для каждого пациента

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; } 

} 

Теперь проблема заключается в том, что я не смог отобразить один из них, чтобы войти в deta илы. Я хочу выбрать «Пациент», и появятся разные знаки «Виталы», и я сохраню те, которые мне нужны для таблицы 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

ответ

9

Не существует единого ответа (решения) на эту (вашу) проблему. Это зависит от того, как вы хотите проектировать/строить/достигать своего решения. Простой, скотина решение: Просто модель представления в качестве wraper, который имеет в качестве своих свойств классов (моделей) вы сделали и работать вокруг этого,

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

Или использовать только PatientViewModel и загрузить его PVSigns асинхронной с Ajax. Нет простого лучшего решения, все зависит от того, чего вы хотите достичь как большего изображения.

0

Я ответил так же на вопрос here. Как отметил Александру, самым простым и простым способом было бы объединить ваши модели в ViewModel. Вы можете прочитать о других способах реализации этого here.

+0

Спасибо. Ваш указатель сказал мне, как с этим справиться. –

Смежные вопросы