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