2012-11-01 11 views
1

我已经实现在线编辑,Knedo UI MVC电网与阿贾克斯结合, 服务器端验证在控制器处理和发送错误回用 -KendoUI MVC网 - ADDNEW或更新记录使用Ajax和服务器端验证

的ModelState .AddModelError(“Error:”,ex.Message);

@(Html.Kendo().Grid<AnalyticsServiceWeb.ViewModel.SomeViewModel>() .Name("Grid") .Columns(columns => { columns.Bound(p => p.Name); columns.Bound(p => p.Path); columns.Bound(p => p.Space); columns.Command(command => { command.Edit(); command.Destroy(); }); }) .ToolBar(toolbar => toolbar.Create()) .Editable(editable => editable.Mode(GridEditMode.InLine)) )

function error_handler(e) { 
    if (e.errors) { 
     var message = "Errors:\n"; 
     $.each(e.errors, function (key, value) { 
      if ('errors' in value) { 
       $.each(value.errors, function() { 
        message += this + "\n"; 
       }); 
      } 
     }); 
     alert(message); 
    } 
} 

时,有一个服务器端异常是越来越显示服务器端错误信息,但它仍然完成了UI的动作,我的意思是它增加了新的记录到网格,并更新为以及即使有服务器端异常。

在动作开始之前有什么办法保留UI的状态吗?它应该以这种方式工作,不知道我是否缺少任何东西?

在此先感谢

回答

1

剑道UI支持(大多数)数据注释在您的视图模型这会给你的客户端不显眼的验证通过Kedno UI提供的,你可以通过查看ModelState

实现服务器端验证

所以这样做在你的控制器动作将处理服务器端验证

If(ModelState.IsValid) 
{ 
    //Write to the Database 
} 
else 
{ 
    //We Have Validation Error, return the model for correction 
} 

这里去一些例子

[Required] 
[DataType.Currency] 
public decimal Currency { get; set; } 

这告诉佩带货币栏目Requried(显然),但东西比这更酷的是剑道电网将自动呈现其货币文本框编辑

时,会做同样的日期和时间,以便本将呈现它的日期选取器

[Required] 
[DataType.Date] 
public decimal Date { get; set; } 

要显示服务器端验证错误试试这个:

误差的主要持有字段的名称。您可以使用它来生成一条消息,其中包含错误的属性名称,例如

$.each(e.errors, function (key, value) { 
    if ('errors' in value) { 
     message += key + ":\n"; 
     $.each(value.errors, function() { 
      message += this + "\n"; 
     }); 
    } 
}); 
相关问题