使用Knockout JS + MVC +服务器端模型验证显示错误?

时间:2011-12-06 00:19:05

标签: asp.net-mvc json validation knockout.js model

使用Knockout JS和jQuery模板控制Html表单。 基本的jQuery验证用于验证字段。 表单被序列化为JSON并使用AJAX提交给MVC控制器操作。 MVC控制器操作执行服务器端模型验证,向ModelState添加错误。

  1. 将这些错误返回给客户端的最佳做法是什么 - 在ModelState中迭代错误并将它们添加到JSON响应中的错误的键/值集合中?

  2. 如何在客户端上显示错误?如何将错误的键/值集合“绑定”到模型的相关字段?

  3. 假设模型上有一个“name”字段,jQuery模板呈现相应的文本框。如何在错误集合中的“名称”字段中获取错误,并在“名称”文本框下方显示错误消息?

2 个答案:

答案 0 :(得分:5)

ko.js(found here)有两个可以帮助你的验证插件,

Knock-Knock validation

Knockout Validation

您可以将其中一个连接到注入客户端的mvc unobstrsive验证数据。

答案 1 :(得分:4)

如果您使用的是MVC,那么不显眼的javascript会根据您模型中的验证集执行客户端验证。您无需执行任何其他配置。

话虽如此,没有直接的方法可以使用javascript和knockoutjs基于模型执行客户端验证。

在客户端有几种方法可以做到这一点。

  1. Jquery或任何其他验证框架可以执行验证。但你需要有标签。这种方法的优点是您的代码简单易维护。
  2. 您可以使用javascript执行客户端自定义验证,并使用knockout绑定验证消息。这需要您为每个输入变量创建错误标签。这种方法的优势在于您可以完全控制如何以及必须显示的内容。
  3. 就个人而言,我在最近的一个项目中有类似的要求,我使用自定义验证检查和错误标签实现了它。