【发布时间】:2018-08-31 08:41:15
【问题描述】:
我的 MVC 应用程序中有一个 KendoUI 网格。网格通过我的 SQL 数据库中的视图显示相关数据。它显示的两个表是Cars 和Bookings
表格:汽车
- 公共 int ID
- 公共字符串注册
- 公共字符串制作
- 公共字符串模型
表格:预订
- 公共 int ID
- public DateTime BookingStart
- public DateTime BookingEnd
- 公共 int Car_Id
网格的代码如下:
@(Html.Kendo().Grid<MyProject.ViewModels.CarBookings>()
.Name("Bookings")
.Columns(columns => {
columns.Bound(c => c.Id);
columns.Bound(c => c.Car_Id);
columns.Bound(c => c.Reg);
columns.Bound(c => c.Make);
columns.Bound(c => c.Model);
columns.Bound(c => c.BookingStart).Format("{0:dd/MM/yyyy}");
columns.Bound(c => c.BookingEnd).Format("{0:dd/MM/yyyy}");
columns.Command(command => { command.Edit(); }).Width(250);
})
.Pageable()
.Sortable()
.Groupable()
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => {
model.Id(p => p.Id);
model.Field(p => p.Id).Editable(false);
model.Field(p => p.Car_Id).Editable(false);
})
.Read(read => read.Action("GetBookings", "Bookings"))
.Update(update => update.Action("UpdateBooking", "Booking")))
))
我们允许用户利用网格的内联编辑功能并更新详细信息。我遇到的问题是这些详细信息实际上来自两个表,因此当他们保存这些更改时,我需要一种方法来使用用户更改的数据更新两个表。
这是UpdateBooking 方法,它非常粗略地尝试更新两个表。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateBooking([DataSourceRequest] DataSourceRequest request, Car car, Booking booking, CarBookings vm)
{
unitOfWork.CarRepository.Update(car);
unitOfWork.BookingRepository.Update(booking);
unitOfWork.Save();
return Json(new[] { vm }.ToDataSourceResult(request, ModelState));
}
这种方法的问题是Booking Id 是从Car Id 引用的。所以这行不通。任何人都可以提供更好的方法来处理这种情况吗?
【问题讨论】:
标签: c# model-view-controller kendo-ui