У меня есть следующие модели:Добавить префикс EditorFor для всех элементов
public class CaseFormViewModel
{
public int ID { get; set; }
public int AppID { get; set; }
public CaseGeneralFormViewModel General { get; set; }
public CaseMedicalFormViewModel Medical { get; set; }
public CaseLegalFormViewModel Legal { get; set; }
public CaseCommentsFormViewModel Comments { get; set; }
public List<UploadedDocumentModel> Attachments { get; set; }
public string AzureStorage { get; set; }
}
public class CaseGeneralFormViewModel : CaseGeneralViewModelBase
{
[Required]
public new string PatientName { get; set; }
также у меня есть вид с моделью CaseFormViewModel и имеет частичный вид с моделью CaseGeneralFormViewModel. Посмотреть загружает этот частичный вид:
@Html.Partial("PartialCaseGeneralForm", Model.General)
Частичный вид имеет следующую строку:
@Html.ValidationMessageFor(model => model.PatientName)
тогда, когда я отправляю эту точку зрения на метод контроллера:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateCase(int AppID, CHFN.Models.CaseFormViewModel model)
{
model.General является ноль. Я понимаю, почему, поскольку PatientName должен иметь id = «General.PatientName» вместо id = «PatientName», но как я могу добавить этот префикс для всех элементов на странице?
Я вижу некоторую способность сделать это: изменить метод пост контроллера для:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateCase(int AppID, CaseGeneralFormViewModel general)
{
но первым на всех, код загрязнен (структура внутренних классов сломаны), во-вторых - любой класс (т.е. CaseGeneralFormViewModel) могут иметь 2 свойства одного и того же класса (т.е.
public Class1 Prop1 { get; set; }
public Class1 Prop2 { get; set; }
). Как решить эту проблему - я не знаю ....