Anonymous
Данные, не отображаемые в полях формы при попытке обновлять, но создают нормально
Сообщение
Anonymous » 20 июн 2025, 07:15
Я работаю над основным приложением ASP.NET с ядро Entity Framework. Функциональность Create работает нормально - данные сохраняются в базе данных. Однако, когда я пытаюсь отредактировать/обновить записи, поля формы появляются пустыми, даже если данные существуют в базе данных.
action), поля должны быть заполнены существующими данными.
Данные существуют в базе данных (подтвержденные путем отладки).
НЕТ ошибки, но все поля кажутся пустыми.
Код: Выделить всё
[h4]Medical History[/h4]
Admitting Diagnosis
Duration of the Symptoms/ Treatment prior to Admission
Treatment Plan
Final Diagnosis Upon Discharge
Previous Treatment and Duration
Health Accessibility Problem
Метод получения (работает нормально - возвращает данные для демографических и классификации ):
Код: Выделить всё
public async Task Get(int id) where T : class
{
var data = await _context.AssessmentTools
.Include(q => q.Demographic)
.Include (q => q.FamilyComposition)
.Include(q => q.HouseHold)
.Include(q => q.Classification)
.Include(q => q.MonthlyExpense)
.Include(q => q.MedicalHistory)
.FirstOrDefaultAsync(x => x.AssessmentToolId == id);
if (data == null)
{
throw new Exception("Form not found");
}
var viewData = _mapper.Map(data);
return viewData;
}
< /code>
Редактировать действия: < /p>
public async TaskEditForm(int id)
{
var form = await _assessmentFormService.Get(id);
return View(form);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task EditFormConfirm(AssesmentFormVM model)
{
await _assessmentFormService.UpdateForm(model);
return RedirectToAction(nameof(Index));
}
< /code>
Метод обновления: < /p>
public async Task UpdateForm(AssesmentFormVM form)
{
var existingForm = await _context.AssessmentTools
.Include(q => q.Demographic)
.Include(q => q.FamilyComposition)
.Include(q => q.HouseHold)
.Include(q => q.Classification)
.Include(q => q.MonthlyExpense)
.Include(q => q.MedicalHistory)
.FirstOrDefaultAsync(x => x.AssessmentToolId == form.Id);
if (existingForm == null)
throw new Exception("Assessment form not found");
existingForm.AssessmentName = form.AssessmentName;
existingForm.AssessmentStatus = form.AssessmentStatus;
existingForm.DateOfInterview = form.DateOfInterview;
existingForm.TimeOfInterview = form.TimeOfInt;
existingForm.BasicWard = form.BasicWard;
existingForm.NonBasicWard = form.NonBasicWard;
existingForm.HealthRecordNumber = form.HealthRecordNumber;
existingForm.MSWDNumber = form.MSWDNumber;
existingForm.SourceOfReferral = form.SourceOfReferral;
existingForm.Address = form.Address;
existingForm.ContactNumber = form.ContactNumber;
existingForm.Informant = form.Informant;
existingForm.RelationToPatient = form.RelationToPatient;
existingForm.InformantContactNumber = form.InformantContactNumber;
existingForm.InformantAddress = form.InformantAddress;
if (form.Demographic != null)
{
existingForm.Demographic = new Demographic
{
FirstName = form.Demographic.FirstName,
Surname = form.Demographic.Surname,
MiddleName = form.Demographic.MiddleName,
DateOfBirth = form.Demographic.DateOfBirth,
Age = form.Demographic.Age,
Sex = form.Demographic.Sex,
PlaceOfBirth = form.Demographic.PlaceOfBirth,
Gender = form.Demographic.Gender,
Religion = form.Demographic.Religion,
PermanentAddress = form.Demographic.PermanentAddress,
TemporaryAddress = form.Demographic.TemporaryAddress,
ContactNumber = form.Demographic.ContactNumber,
Nationality = form.Demographic.Nationality,
CivilStatus = form.Demographic.CivilStatus,
HighesteEducationAttainment = form.Demographic.HighesteEducationAttainment,
Occupation = form.Demographic.Occupation,
PatientsMonthlyIncome = form.Demographic.PatientsMonthlyIncome,
PhilhealthNumber = form.Demographic.PhilhealthNumber,
PhilHealthMembership = form.Demographic.PhilHealthMembership
};
}
if (form.FamilyComposition != null && form.FamilyComposition.Any())
{
existingForm.FamilyComposition = form.FamilyComposition.Select(q => new FamilyComposition
{
Name = q.Name,
RelationshipToPatient = q.RelationshipToPatient,
Age = q.Age,
DateOfBirth = q.DateOfBirth,
LivingWithChild = q.LivingWithChild,
CivilStatus = q.CivilStatus,
Occupation = q.Occupation,
MonthlyIncome = q.MonthlyIncome,
EducationAttainment = q.EducationAttainment
}).ToList();
}
if (form.HouseHold != null)
{
existingForm.HouseHold = new HouseHold
{
OtherSourceIfIncome = form.HouseHold.OtherSourceIfIncome,
HouseHoldSize = form.HouseHold.HouseHoldSize,
TotalhouseHoldIncome = form.HouseHold.TotalhouseHoldIncome,
PerCapitaIncome = form.HouseHold.PerCapitaIncome,
};
}
if (form.Classification != null)
{
existingForm.Classification = new Classification
{
MainClassification = form.Classification.MainClassification,
SubClassification = form.Classification.SubClassification,
MembershipToMargin = form.Classification.MembershipToMargin
};
}
if (form.MonthlyExpenses != null)
{
existingForm.MonthlyExpense = new MonthlyExpense
{
HousingCost = form.MonthlyExpenses.HousingCost,
FoodWaterCost = form.MonthlyExpenses.FoodWaterCost,
ClothingCost = form.MonthlyExpenses.ClothingCost,
TransportationCost = form.MonthlyExpenses.TransportationCost,
CommunicationCost = form.MonthlyExpenses.CommunicationCost,
MedicalCost = form.MonthlyExpenses.MedicalCost,
HouseHelpCost = form.MonthlyExpenses.HouseHelpCost,
OtherCosts = form.MonthlyExpenses.OtherCosts,
LightCost = form.MonthlyExpenses.LightCost,
LightSource = form.MonthlyExpenses.LightSource,
FuelSource = form.MonthlyExpenses.FuelSource,
WaterSource = form.MonthlyExpenses.WaterSource,
TotalExpenses = form.MonthlyExpenses.TotalExpenses,
EducationCost = form.MonthlyExpenses.EducationCost
};
}
if (form.MedicalHistroy != null)
{
existingForm.MedicalHistory = new MedicalHistory
{
AdmitingDiagnosis = form.MedicalHistroy.AdmitingDiagnosis,
FinalDiagnosis = form.MedicalHistroy.FinalDiagnosis,
DurationPriorAdmission = form.MedicalHistroy.DurationPriorAdmission,
PreviousTreatement = form.MedicalHistroy.PreviousTreatement,
TreatmentPlan = form.MedicalHistroy.TreatmentPlan,
HealthAccessibilityIssue = form.MedicalHistroy.HealthAccessibilityIssue
};
}
await _context.SaveChangesAsync();
}
Что я пробовал:
Проверенные данные возвращаются из метода Get (это)
Проверенная модель Привязка модели - Assesmentformvm Содержит правильные данные, когда можно узнать, что иначеит. Атрибуты
Пробовали удалить Automapper, чтобы исключить вопросы отображения
Вопрос : Почему мои поля формы будут выглядеть пустыми при редактировании, даже если данные существуют и передаются в правильное представление? Что может предотвратить отображение значений в полях Textarea?>
Подробнее здесь:
https://stackoverflow.com/questions/796 ... -work-fine
1750392934
Anonymous
Я работаю над основным приложением ASP.NET с ядро Entity Framework. Функциональность Create работает нормально - данные сохраняются в базе данных. Однако, когда я пытаюсь отредактировать/обновить записи, поля формы появляются пустыми, даже если данные существуют в базе данных.[code]EditForm[/code] action), поля должны быть заполнены существующими данными. Данные существуют в базе данных (подтвержденные путем отладки). НЕТ ошибки, но все поля кажутся пустыми. [code] [h4]Medical History[/h4] Admitting Diagnosis Duration of the Symptoms/ Treatment prior to Admission Treatment Plan Final Diagnosis Upon Discharge Previous Treatment and Duration Health Accessibility Problem [/code] Метод получения (работает нормально - возвращает данные для демографических и классификации ): [code]public async Task Get(int id) where T : class { var data = await _context.AssessmentTools .Include(q => q.Demographic) .Include (q => q.FamilyComposition) .Include(q => q.HouseHold) .Include(q => q.Classification) .Include(q => q.MonthlyExpense) .Include(q => q.MedicalHistory) .FirstOrDefaultAsync(x => x.AssessmentToolId == id); if (data == null) { throw new Exception("Form not found"); } var viewData = _mapper.Map(data); return viewData; } < /code> Редактировать действия: < /p> public async TaskEditForm(int id) { var form = await _assessmentFormService.Get(id); return View(form); } [HttpPost] [ValidateAntiForgeryToken] public async Task EditFormConfirm(AssesmentFormVM model) { await _assessmentFormService.UpdateForm(model); return RedirectToAction(nameof(Index)); } < /code> Метод обновления: < /p> public async Task UpdateForm(AssesmentFormVM form) { var existingForm = await _context.AssessmentTools .Include(q => q.Demographic) .Include(q => q.FamilyComposition) .Include(q => q.HouseHold) .Include(q => q.Classification) .Include(q => q.MonthlyExpense) .Include(q => q.MedicalHistory) .FirstOrDefaultAsync(x => x.AssessmentToolId == form.Id); if (existingForm == null) throw new Exception("Assessment form not found"); existingForm.AssessmentName = form.AssessmentName; existingForm.AssessmentStatus = form.AssessmentStatus; existingForm.DateOfInterview = form.DateOfInterview; existingForm.TimeOfInterview = form.TimeOfInt; existingForm.BasicWard = form.BasicWard; existingForm.NonBasicWard = form.NonBasicWard; existingForm.HealthRecordNumber = form.HealthRecordNumber; existingForm.MSWDNumber = form.MSWDNumber; existingForm.SourceOfReferral = form.SourceOfReferral; existingForm.Address = form.Address; existingForm.ContactNumber = form.ContactNumber; existingForm.Informant = form.Informant; existingForm.RelationToPatient = form.RelationToPatient; existingForm.InformantContactNumber = form.InformantContactNumber; existingForm.InformantAddress = form.InformantAddress; if (form.Demographic != null) { existingForm.Demographic = new Demographic { FirstName = form.Demographic.FirstName, Surname = form.Demographic.Surname, MiddleName = form.Demographic.MiddleName, DateOfBirth = form.Demographic.DateOfBirth, Age = form.Demographic.Age, Sex = form.Demographic.Sex, PlaceOfBirth = form.Demographic.PlaceOfBirth, Gender = form.Demographic.Gender, Religion = form.Demographic.Religion, PermanentAddress = form.Demographic.PermanentAddress, TemporaryAddress = form.Demographic.TemporaryAddress, ContactNumber = form.Demographic.ContactNumber, Nationality = form.Demographic.Nationality, CivilStatus = form.Demographic.CivilStatus, HighesteEducationAttainment = form.Demographic.HighesteEducationAttainment, Occupation = form.Demographic.Occupation, PatientsMonthlyIncome = form.Demographic.PatientsMonthlyIncome, PhilhealthNumber = form.Demographic.PhilhealthNumber, PhilHealthMembership = form.Demographic.PhilHealthMembership }; } if (form.FamilyComposition != null && form.FamilyComposition.Any()) { existingForm.FamilyComposition = form.FamilyComposition.Select(q => new FamilyComposition { Name = q.Name, RelationshipToPatient = q.RelationshipToPatient, Age = q.Age, DateOfBirth = q.DateOfBirth, LivingWithChild = q.LivingWithChild, CivilStatus = q.CivilStatus, Occupation = q.Occupation, MonthlyIncome = q.MonthlyIncome, EducationAttainment = q.EducationAttainment }).ToList(); } if (form.HouseHold != null) { existingForm.HouseHold = new HouseHold { OtherSourceIfIncome = form.HouseHold.OtherSourceIfIncome, HouseHoldSize = form.HouseHold.HouseHoldSize, TotalhouseHoldIncome = form.HouseHold.TotalhouseHoldIncome, PerCapitaIncome = form.HouseHold.PerCapitaIncome, }; } if (form.Classification != null) { existingForm.Classification = new Classification { MainClassification = form.Classification.MainClassification, SubClassification = form.Classification.SubClassification, MembershipToMargin = form.Classification.MembershipToMargin }; } if (form.MonthlyExpenses != null) { existingForm.MonthlyExpense = new MonthlyExpense { HousingCost = form.MonthlyExpenses.HousingCost, FoodWaterCost = form.MonthlyExpenses.FoodWaterCost, ClothingCost = form.MonthlyExpenses.ClothingCost, TransportationCost = form.MonthlyExpenses.TransportationCost, CommunicationCost = form.MonthlyExpenses.CommunicationCost, MedicalCost = form.MonthlyExpenses.MedicalCost, HouseHelpCost = form.MonthlyExpenses.HouseHelpCost, OtherCosts = form.MonthlyExpenses.OtherCosts, LightCost = form.MonthlyExpenses.LightCost, LightSource = form.MonthlyExpenses.LightSource, FuelSource = form.MonthlyExpenses.FuelSource, WaterSource = form.MonthlyExpenses.WaterSource, TotalExpenses = form.MonthlyExpenses.TotalExpenses, EducationCost = form.MonthlyExpenses.EducationCost }; } if (form.MedicalHistroy != null) { existingForm.MedicalHistory = new MedicalHistory { AdmitingDiagnosis = form.MedicalHistroy.AdmitingDiagnosis, FinalDiagnosis = form.MedicalHistroy.FinalDiagnosis, DurationPriorAdmission = form.MedicalHistroy.DurationPriorAdmission, PreviousTreatement = form.MedicalHistroy.PreviousTreatement, TreatmentPlan = form.MedicalHistroy.TreatmentPlan, HealthAccessibilityIssue = form.MedicalHistroy.HealthAccessibilityIssue }; } await _context.SaveChangesAsync(); } [/code] Что я пробовал: [list] [*] Проверенные данные возвращаются из метода Get (это) [*] Проверенная модель Привязка модели - Assesmentformvm Содержит правильные данные, когда можно узнать, что иначеит. Атрибуты [*] Пробовали удалить Automapper, чтобы исключить вопросы отображения [/list] [b] Вопрос [/b]: Почему мои поля формы будут выглядеть пустыми при редактировании, даже если данные существуют и передаются в правильное представление? Что может предотвратить отображение значений в полях Textarea?> Подробнее здесь: [url]https://stackoverflow.com/questions/79672838/data-not-showing-in-form-fields-when-trying-to-update-but-creates-work-fine[/url]