Извините, если об этом уже был дан ответ, но я ищу наилучшую практику при работе с приведенным ниже сценарием.MVC Model> Показать шаблон модели модели
У меня довольно большое приложение MVC5, которое будет иметь множество форм/страниц.
В этом примере у меня есть пациент класс как ниже (это урезанная версия более крупного класса)
Public Class Patient {
[Display(Name = "Patient Trial Number")]
public int ID { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Patient DOB")]
public DateTime PatientDOB { get; set; }
[Required]
[Display(Name = "Patient Gender")]
public Gender PatientGender { get; set; }
}
У меня есть различные модели для каждой формы, которая должна быть завершена. Некоторые из них являются очень большими 80 + свойствами.
Ниже представлен урезанный пример модели формы.
public class ExamplePatientForm
{
[Key]
public Patient PatientID { get; set; }
[Required]
[Display(Name = "Was Sample One taken?")]
public bool? SampleOneTaken{ get; set; }
[Required]
[Display(Name = "Date Sample One Taken")]
public DateTime DateSampleOneTaken { get; set; }
[Required]
[Display(Name = "Was Sample Two taken?")]
public bool? SampleTwoTaken{ get; set; }
[Required]
[Display(Name = "Date Sample Two Taken")]
public DateTime DateSampleTwoTaken { get; set; }
public int PatientRating {get;set;}
public string Comments { get; set; }
}
В действительности, как класс пациента, так и отдельные классы форм намного больше.
Первоначально я использовал html.HiddenFor, чтобы держать детали класса Patient в отдельных формах, хотя это не было правильно.
Затем я создал ViewModels (смотри ниже)
[Key]
public int PatientID { get; set; }
[Required]
[Display(Name = "Was Sample One taken?")]
public bool? SampleOneTaken{ get; set; }
[Required]
[Display(Name = "Date Sample One Taken")]
public DateTime DateSampleOneTaken { get; set; }
[Required]
[Display(Name = "Was Sample Two taken?")]
public bool? SampleTwoTaken{ get; set; }
[Required]
[Display(Name = "Date Sample Two Taken")]
public DateTime DateSampleTwoTaken { get; set; }
public int PatientRating {get;set;}
public string Comments { get; set; }
}
В ViewModels удалены отношения и хранится PatientID в виде целого числа. Затем я сопоставил это с моделью сущности в контроллере.
Хотя для дублирования каждой модели модели для создания модели просмотра мне кажется сумасшедшим, тем более что некоторые из них содержат 80+ свойств.
Кто-нибудь знает лучший способ приблизиться к этому? У меня будет около 50 уникальных форм.
Также я создал шаблон редактора для модели пациента, чтобы я мог отображать некоторую информацию о пациенте в верхней части каждой формы. Но нужно только отображать определенные свойства, поэтому не уверен, что мне нужно создать отдельный PatientViewModel для этого или просто скрыть другие элементы.
Надеюсь, что это имеет смысл. Любая помощь будет принята с благодарностью.
С уважением, Роб
Одна вещь, которую вы могли бы сделать, это Разбейте Модель очень большой в небольших Просмотр моделей, а затем использовать мастер для Создать/обновить пациента. –
И для отображения информации, которую вы можете использовать вкладки. Отображение общей информации в верхней и другой информации в закладках. - Каждая вкладка может иметь собственные данные загрузки модели модели с помощью Ajax. –