Почему мои данные отправляются несколько раз из моего KendoUI Grid Popup Editor? - PullRequest
0 голосов
/ 31 января 2019

Я использую библиотеку 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 получает два представления, мое первое и новое, которое я только что сделал.Таким образом, вы получаете дублирование, которое продолжает складываться для каждой новой строки, которую я добавляю.Кто-нибудь сталкивался с этим раньше?

...