将视图模型映射到KnockoutJS验证

Rya*_*yan 17 javascript validation asp.net-mvc knockout.js

我使用KnockoutJS,KnockoutJS Mapping插件和jQuery 1.7.1使用ASP.NET MVC 2构建了一个页面.我希望能够使用KnockoutJS Validation插件(可在此处找到).但是,我需要同时进行服务器和客户端验证.

是否可以将我的视图模型映射到使用.extend()方法的KnockoutJS Validation插件

编辑:示例.自动转动:

[Required]
public string Firstname { get; set; }
Run Code Online (Sandbox Code Playgroud)

进入:

var viewmodel = {
    firstname: ko.observable().extend({ required: true });
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*ese 7

Mvc Controls Toolkit中,我实现了一个引擎,可以在knockout.js上启用通常的Mvc验证(数据注释或其他).可以启用客户端和服务器端验证.此外,淘汰赛可以与Mvc助手一起使用,一些绑定可以自动推断,等等.


pil*_*ice 5

如果您正在使用knockoutjs和jquery,我想出了以下非常简单的方法来进行基本的客户端验证.

无论您想在页面上显示错误消息的哪个位置,都要包含这样的span标记:

<span name="validationError" style="color:Red" 
data-bind="visible: yourValidationFunction(FieldNameToValidate())">
* Required.
</span>
Run Code Online (Sandbox Code Playgroud)

显然你需要编写"yourValidationFunction"来做你想做的任何事情.它只需要返回true或false,true表示显示错误.

如果显示任何验证错误,您可以使用jquery来阻止用户继续.你可能已经有一个保存按钮,触发一个javascript函数来做一些ajax或其他什么,所以只需在它的顶部包含它:

 if ($("[name='validationError']:visible").length > 0) {
        alert('Please correct all errors before continuing.');
        return;
    }
Run Code Online (Sandbox Code Playgroud)

这比许多其他验证解决方案更简单,更灵活.您可以将错误消息放在任何位置,并且不需要学习如何使用某些验证库,并且无论服务器端技术如何,此方法都可以正常工作.