Проверяйте данные перед вставкой в ​​Kendo Grid в ASP.NET MVC

Когда я добавляю новую запись или изменяю существующую строку, я хочу проверить новые данные в методе действия. Если введенное новое значение не находится в определенном диапазоне от 1 до 10 (или если существующее значение изменено, чтобы выйти за пределы допустимого диапазона), я не хочу, чтобы вставка/обновление было успешным.

Я пробовал следующее:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditingInline_Create([DataSourceRequest] DataSourceRequest request,   ProductViewModel product)
    {
         if (product != null && ModelState.IsValid)
         {    
              if (product.Price > 1 && product.Price < 10)
              {
                   SessionProductRepository.Insert(product); 
              }                               
         }

         return Json(new [] { product }.ToDataSourceResult(request, ModelState));
    }

Однако, когда метод возвращается, в сетку добавляется новая строка с недопустимыми данными о цене.

Что я упускаю? Как я могу исправить оператор return для обработки этого случая?


person nv.snow    schedule 04.10.2013    source источник


Ответы (3)


Этот пост в блоге Kendo UI может дать вам некоторые идеи о том, как справиться с этим: http://www.kendoui.com/blogs/teamblog/posts/13-08-29/handling-server-side-validation-errors-in-your-kendo-ui-grid.aspx

По сути, вы можете добавить ошибки в коллекцию ошибок ModelState на сервере:

ModelState.AddModelError("SomsField", "Some error message.");

Затем функция Kendo ToDataSourceResult() поместит эти ошибки ModelState в коллекцию errors в формате JSON, возвращаемом клиенту.

На стороне клиента функция ошибок DataSource будет вызываться при наличии сообщений в коллекции ошибок ответа сервера.

Затем вы можете обрабатывать ошибки в функции ошибок DataSource.

person CodingWithSpike    schedule 05.10.2013

Вы можете вызвать grid.cancelChanges(), чтобы предотвратить любые ожидающие изменения в источнике данных, как указано в URL-адресе http://docs.kendoui.com/api/web/grid#methods-cancelChanges

person Ken W    schedule 05.10.2013

Ну, может быть, вы могли бы пойти с событием «редактирования» Kendo Grid. См. документы здесь: http://docs.kendoui.com/api/web/grid#events-edit

person Stargazer    schedule 05.10.2013