Hi
I have some fields in my model which do not need to display or edit via end user, It's system fields (such as CreatedBy, DateCreated, TimeCreated, LastModifiedBy, LastModifiedDate and LastModifiedTime) & controlled via my webApp (through overriding SaveChanges method).
This process works as well in Create action, but after Update action, those fields set to null.
Here is my Edit action :
[Route("Visit/Edit/{id?}")] public IActionResult Edit(string id) { var curVisitHeader = _dbContext.VisitHeaders.Find(Guid.Parse(id)); var patient = _dbContext.Patients.Find(curVisitHeader.PatientRowID); ViewBag.DiagnosisID = new SelectList(_dbContext.Diagnoses, "DiagnosisID", "DiagnosisName"); ViewBag.PatientFullName = string.Format("{0} {1}", patient.PatientFname, patient.PatientLname); return View("Edit", curVisitHeader); }
Here is my Edit view :
<form id="frmEditVisitItem" asp-action="Update" method="post"><div asp-validation-summary="All" class="text-danger"></div><input type="hidden" asp-for="VisitHeaderRowID" value="@Model.VisitHeaderRowID" /><input type="hidden" asp-for="PatientRowID" value="@Model.PatientRowID" /><input type="hidden" asp-for="ProductSupplierID" value="@Model.ProductSupplierID" /><input type="hidden" asp-for="MedicalCenterDoctorRowID" value="@Model.MedicalCenterDoctorRowID" /><input type="hidden" asp-for="OwnerTableName" value="@Model.OwnerTableName" /><input type="hidden" asp-for="OwnerID" value="@Model.OwnerID" /><div class="form-group"><label asp-for="VisitDate" class="control-label"></label><input asp-for="VisitDate" class="form-control" value="@Model.VisitDate" /><span asp-validation-for="VisitDate" class="text-danger"></span></div><div class="form-group"><label asp-for="Description" class="control-label"></label><textarea asp-for="Description" class="form-control" value="@Model.Description"></textarea><span asp-validation-for="Description" class="text-danger"></span></div><div class="form-group"><label asp-for="DiagnosisID" class="control-label"></label><select asp-for="DiagnosisID" class="form-control" asp-items="@ViewBag.DiagnosisID" value="@Model.DiagnosisID"></select><span asp-validation-for="DiagnosisID" class="text-danger"></span></div><div class="text-right"><button type="submit" id="btnCreateVisit" class="btn btn-success">Save</button> @Html.ActionLink("Back", "Details", "Patient", new { id = Model.PatientRowID })</div></form>
And here is my Update action :
[HttpPost] [ValidateAntiForgeryToken] public IActionResult Update([Bind("VisitHeaderRowID, PatientRowID, ProductSupplierID, VisitDate, Description, MedicalCenterDoctorRowID, DiagnosisID, OwnerTableName, OwnerID")] VisitHeaders visitHeader) { if (this.ModelState.IsValid) { _dbContext.Entry(visitHeader).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _dbContext.SaveChanges(); return RedirectToAction("Details", "Patient", new { id = visitHeader.PatientRowID }); } return View("Edit", visitHeader); }
How to work-around this problem?
Thanks in advance