我正在尝试不同的客户端MVC框架(主要是Backbone和Knockout)。我想提出一种验证方法。我有MVC 4 Web API,只返回数据。所有视图引擎逻辑都在客户端。显然,我理解服务器端验证是必须的。这,我通过模型绑定实现DataAnnotations和标准的ASP.NET MVC验证。
但是,我最终还是在客户端重复了所有验证逻辑。有没有办法返回数据,但附加了验证逻辑?
答案 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#以完成验证。所有验证逻辑都需要在服务器和客户端脚本语言上编写,以便提供适当的验证