在ASP.NET MVC中插入Kendo Grid之前验证数据

时间:2013-10-04 18:54:33

标签: c# asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc

当我添加新记录或修改现有行时,我想在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语句来处理这种情况?

3 个答案:

答案 0 :(得分:2)

此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错误放入返回给客户端的JSON中的errors集合中。

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

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

答案 1 :(得分:1)

您可以调用grid.cancelChanges()来阻止数据源中的任何挂起更改,如网址http://docs.kendoui.com/api/web/grid#methods-cancelChanges

中所述

答案 2 :(得分:0)

好吧,也许你可以选择Kendo Grid的“编辑”事件。请参阅此处的文档:http://docs.kendoui.com/api/web/grid#events-edit