客户端MVC框架(Backbone,Knockout等)和验证

时间:2012-05-25 18:38:47

标签: asp.net-mvc backbone.js knockout.js asp.net-web-api

我正在尝试不同的客户端MVC框架(主要是Backbone和Knockout)。我想提出一种验证方法。我有MVC 4 Web API,只返回数据。所有视图引擎逻辑都在客户端。显然,我理解服务器端验证是必须的。这,我通过模型绑定实现DataAnnotations和标准的ASP.NET MVC验证。

但是,我最终还是在客户端重复了所有验证逻辑。有没有办法返回数据,但附加了验证逻辑?

2 个答案:

答案 0 :(得分:5)

Blast-Dan部分正确,这意味着除了键值对之外,您无法从客户端向服务器传递额外数据。

但是,您可以做的是将DataAnnotations传播到客户端,以便不需要重写某些验证代码。复杂规则并非易事,但Html.EditorFor助手将帮助您生成带有附加验证属性的输入文本框,这些属性可通过jquery验证无缝获取并停止表单提交。 我在考虑[必需],[Range()]和[RegularExpression()]数据注释等等。

如果您只是创建一个普通模型,然后使用向导在Visual Studio中添加Controller来创建视图以进行CRUD操作,则可以看到一个快速示例。您将看到在Model类中使用的数据注释最终是如何在输出html上呈现的。

如果您在没有HtmlHelper的情况下自己创建HTML(我认为您可以在敲定标记的情况下使用它),您可能需要从this link开始检查DataAnnotationsModelValidatorProvider和IClientValidatable接口。

正如您所看到的,这仍然是未知的领域:/

答案 1 :(得分:2)

没有

在向serer提供数据时,您需要使用HTTP协议,您将使用Post或Get方法。这只能传递Key Value对。使用MVC数据绑定,您可以绑定这些键值对以创建复杂对象。

但是,无法将元数据或函数传输到C#以完成验证。所有验证逻辑都需要在服务器和客户端脚本语言上编写,以便提供适当的验证