Ясно, связанными свойствами, при проводке (страниц бритвы )
Как мне очистить привязку к этим свойствам, чтобы изменения, которые я пытаюсь внести в метод onpost, прошли?
У меня есть 6 связанных свойств в ShipmentModel:
[BindProperty(SupportsGet = true)] public ShipmentModel Shipment { get; set; } public class ShipmentModel { public string CurrentShipDt1 { get; set; } public int CurrentShipQty1 { get; set; } public string CurrentShipDt2 { get; set; } public int CurrentShipQty2 { get; set; } public string CurrentShipDt3 { get; set; } public int CurrentShipQty3 { get; set; } }
В моем onget я запускаю несколько запросов linq, и он правильно публикует результаты в эти свойства:
public async Task<IActionResult> OnGetAsync(string partNo, string requestStatus, string supplier, string searchString) { // Find the current shipment info for this part CmtPartShipSchedule = await _context.CmtPartShipSchedules .OrderByDescending(m => m.EnterDt) .FirstOrDefaultAsync(m => m.PartNo == partNo); if (CmtPartShipSchedule != null){ var shipDtQuery = (from c in _context.CmtPartShipments where CmtPartShipSchedule.Id == c.CmtPartShipScheduleId orderby c.ShipDt descending select c.ShipDt).ToList(); List<DateTime> CmtPartShipDts = shipDtQuery; var shipQtyQuery = (from c in _context.CmtPartShipments where CmtPartShipSchedule.Id == c.CmtPartShipScheduleId orderby c.ShipDt descending select c.ShipQty).ToList(); List<int> CmtPartShipQtys = shipQtyQuery; CmtPartShipment = await _context.CmtPartShipments .FirstOrDefaultAsync(m => m.CmtPartShipScheduleId == CmtPartShipSchedule.Id); int shipCount = shipDtQuery.Count(); if (shipCount > 0) { if (CmtPartShipDts[0] != null & CmtPartShipQtys[0] != 0) { string ShipDt1 = CmtPartShipDts[0].ToString("yyyy-MM-dd"); Shipment.CurrentShipDt1 = ShipDt1; Shipment.CurrentShipQty1 = CmtPartShipQtys[0]; } } if (shipCount > 1) { if (CmtPartShipDts[1] != null & CmtPartShipQtys[1] != 0) { string ShipDt2 = CmtPartShipDts[1].ToString("yyyy-MM-dd"); Shipment.CurrentShipDt2 = ShipDt2; Shipment.CurrentShipQty2 = CmtPartShipQtys[1]; } } if (shipCount > 2) { if (CmtPartShipDts[2] != null & CmtPartShipQtys[2] != 0) { string ShipDt3 = CmtPartShipDts[2].ToString("yyyy-MM-dd"); Shipment.CurrentShipDt3 = ShipDt3; Shipment.CurrentShipQty3 = CmtPartShipQtys[2]; } } } return Page(); }
Проблема заключается в методе onpost, который я создал - он должен очистить все свойства, имеющие значения в них, которые были установлены в моем onget одним нажатием кнопки. Однако я не могу заставить его сделать именно это. На данный момент он правильно проходит через мой метод, но не публикует результаты (из-за привязки модели, которая перезаписывает эти изменения, которые я пытаюсь сделать, я предполагаю). Вот что у меня есть:
public async Task<IActionResult> OnPostCurrentPOsAsync(string partNo, string requestStatus, string supplier, string searchString) { if (!ModelState.IsValid) { return Page(); } // Tried to clear the bind so that I can overwrite.. Doesn't change anything // https://weblog.west-wind.com/posts/2012/apr/20/aspnet-mvc-postbacks-and-htmlhelper-controls-ignoring-model-changes //ModelState.Remove(Shipment.CurrentShipDt1); //ModelState.Remove(Shipment.CurrentShipDt2); //ModelState.Remove(Shipment.CurrentShipDt3); //ModelState.Remove(Shipment.CurrentShipQty1.ToString()); //ModelState.Remove(Shipment.CurrentShipQty2.ToString()); //ModelState.Remove(Shipment.CurrentShipQty3.ToString()); Shipment.CurrentShipDt1 = null; Shipment.CurrentShipQty1 = 0; Shipment.CurrentShipDt2 = null; Shipment.CurrentShipQty2 = 0; Shipment.CurrentShipDt3 = null; Shipment.CurrentShipQty3 = 0; int shipCount = POETAs.Count(); if (shipCount > 0) { if (POETAs[0] != null & POQtys[0] != 0) { string ShipDt1 = POETAs[0].ToString("yyyy-MM-dd"); Shipment.CurrentShipDt1 = ShipDt1; Shipment.CurrentShipQty1 = POQtys[0]; } } if (shipCount > 1) { if (POETAs[1] != null & POQtys[1] != 0) { string ShipDt2 = POETAs[1].ToString("yyyy-MM-dd"); Shipment.CurrentShipDt2 = ShipDt2; Shipment.CurrentShipQty2 = POQtys[1]; } } if (shipCount > 2) { if (POETAs[2] != null & POQtys[2] != 0) { string ShipDt3 = POETAs[2].ToString("yyyy-MM-dd"); Shipment.CurrentShipDt3 = ShipDt3; Shipment.CurrentShipQty3 = POQtys[2]; } } CurrentSupplier = supplier; return RedirectToPage("", new { partNo = CurrentPart, requestStatus = RequestStatus, supplier = CurrentSupplier, searchString = SearchString }); }
Что я уже пробовал:
Первоначально я использовал return Page(); и a похожий пост здесь сказал мне изменить это, чтобы вернуть RedirectToPage (), но все равно никаких изменений. Кроме того, ссылки эта статья, Я попробовал использовать ModelState.Удалите, чтобы "очистить привязку", по-прежнему никаких изменений.