[英]ASP.NET Core 5 MVC / C#: change model's value according to another model
我是 ASP.NET Core 5 MVC 應用程序的新手。 我在我的應用程序中添加了 3 個模型。 它們是Trip
、 Vehicle
和Driver
。
Vehicle
有LastTripDateTime
、 TotalTravelDistanceInKilometers
、 AverageFuelConsumptionInLitres
。
Driver
有UsedVehicleCount
。
當在Trip
model 中添加新記錄或更改任何記錄時,我必須從Vehicle
和Driver
更改這些值。
我怎樣才能做到這一點? 這些操作應該在哪里以及我需要使用哪些方法?
我有控制器和視圖。 CRUD 選項可用。 我修改了 Trip 的基本腳手架創建操作,如下所示。 這行得通嗎?
// POST: Trips/Create
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("TripId,VehicleId,DriverId,DistanceInKilometers,FuelConsumptionInLitres")] Trip trip)
{
if (ModelState.IsValid)
{
_context.Add(trip);
Driver driver = _context.Find<Driver>(trip.DriverId);
driver.UsedVehicleCount += 1;
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(trip);
}
您必須找到模型並更新它們
_context.Add(trip);
var driver = _context.Driver.Where(a=> a.ID == trip.DriverId).FirstOrDefault();
driver.whateveryouneedtoupdate = trip.whateverfiled;
_context.Update(driver);
var vehicle = _context.Vehicle.Where(a=> a.ID == trip.VehicleId).FirstOrDefault();
vehicle.whateveryouneedtoupdate = trip.whateverfiled;
_context.Update(vehicle)
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
您應該有兩個 API 端點,一個用於 1.Adding Trip 2.Updating Trip。
根據您的代碼應該執行的端點
1.增加行程
context.Add(Trip);
var existingDriver = context.Driver.Where(x => x.Id == Trip.driverId).FirstOrDefault();
if (existingDriver != null)
{
existingDriver.FiedlYouwantToUpdate = existingDriver.FiedlYouwantToUpdate + Trip.FieldYouWantToUpdate;
context.Update(existingDriver);
}
else
{
context.Add(newDriver);
}
2.更新行程
context.Update(Trip);
var existingDriver = context.Driver.Where(x => x.Id = Trip.driverId).FirstOrDefault();
if (existingDriver != null)
{
existingDriver.FiedlYouwantToUpdate = existingDriver.FiedlYouwantToUpdate +
Trip.FieldYouWantToUpdate;
context.Update(existingDriver);
}
else
{
context.Add(newDriver);
}
注意:您應該對 Vechicle、Driver 執行此操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.