1

当我添加新记录或修改现有行时,我想在 Action Method 中验证新数据。如果输入的新值不在某个范围 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 语句来处理这种情况?

4

3 回答 3

3

这篇 Kendo UI 博客文章可能会给您一些关于如何处理此问题的想法:http ://www.kendoui.c​​om/blogs/teamblog/posts/13-08-29/handling-server-side-validation-errors-in-你的剑道 ui-grid.aspx

基本上,您可以将错误添加到服务器上的 ModelState 错误集合中:

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

然后 KendoToDataSourceResult()函数会将这些 ModelState 错误放入errors返回给客户端的 JSON 中的集合中。

在客户端,当服务器响应的错误集合中有消息时,将调用 DataSource 的错误函数。

然后您可以在 DataSource 错误函数中处理错误。

于 2013-10-05T15:41:18.220 回答
1

您可以调用 grid.cancelChanges() 以防止数据源中的任何未决更改,如 url http ://docs.kendoui.c​​om/api/web/grid#methods-cancelChanges 中所述

于 2013-10-05T13:36:25.390 回答
0

好吧,也许您可​​以参加 Kendo Grid 的“编辑”事件。在此处查看文档:http ://docs.kendoui.c​​om/api/web/grid#events-edit

于 2013-10-05T13:23:23.023 回答