Я использую библиотеку KendoUI в своем веб-приложении MVC, я решил использовать их встроенный всплывающий редактор в своей сетке, чтобы я мог добавлять записи.По большей части это работает хорошо, но когда я отправляю новую запись, она отправляет мои новые данные, а также все предыдущие строки данных из таблицы, что приводит к появлению дубликатов в моей базе данных.
Сетка
@(Html.Kendo().Grid<Melina.Models.CarsList>()
.Name("carsList")
.Columns(columns =>
{
columns.Bound(c => c.CarName).Filterable(ftb => ftb.Cell(cell => cell.Operator("contains").SuggestionOperator(FilterType.Contains)));
columns.Bound(c => c.CarModel);
columns.Bound(c => c.EngineSize);
columns.Bound(c => c.BuildDate).Format("{0:dd/MM/yyyy}");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(250);
})
.ToolBar(toolBar => {
toolBar.Create();
})
.Pageable()
.Sortable()
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("CarsForm"))
.Filterable(ftb => ftb.Mode(GridFilterMode.Row))
.DataSource(data => data
.Ajax()
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.CarId))
.PageSize(10)
.Read(read => read.Action("FetchCars", "Home"))
.Create(create => create.Action("AddCar", "Home"))
.Update(update => update.Action("EditCar", "Home"))
.Destroy(destroy => destroy.Action("DeleteCar", "Home"))
)
)
Единственное отличие в моей настройке от официальной документации состоит в том, что я использую пользовательский редактор.
CarsForm
@model Melina.Models.CarsList
<div>
<input type="text" name="CarName" id="CarName" />
... etc
... etc
</div>
Я использую общий репозиторий, метод обработки представленных данных из всплывающего редактора Kendo выглядит следующим образом:
AddCar
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddCar([DataSourceRequest] DataSourceRequest request, CarsList car)
{
if (car!= null && ModelState.IsValid)
{
uow.CarRepository.Insert(car);
uow.Save();
}
return Json(new[] { car }.ToDataSourceResult(request, ModelState));
}
Итак, если мы предположим, что у меня есть 1 ряд данных в моей сетке:
Ford | Fiest | 1.3 | 01/02/2018
Затем я нажимаю «Добавить новую запись», заполняю свою пользовательскую форму и добавляю следующую информацию:
Holden | Commodore | 5.0 | 05/06/2006
Когда я нажимаю сохранить метод контроллера AddCar
получает два представления, мое первое и новое, которое я только что сделал.Таким образом, вы получаете дублирование, которое продолжает складываться для каждой новой строки, которую я добавляю.Кто-нибудь сталкивался с этим раньше?