10

我正在使用MVC 4knockout.js并进行淘汰验证。我可以通过敲除验证很好地执行客户端验证。但是我需要确保发布到我的控制器的任何视图模型都是有效的。因此,我手动验证了我的视图模型服务器端并返回序列化为 JSON 的模型状态(一位同事编写了一个简单的函数来执行此操作)。我的问题是我想了解如何使用淘汰验证来使用 JSON 序列化模型状态来输出错误。

那么有没有办法在淘汰验证中手动添加错误和消息?

4

2 回答 2

16

最新的淘汰验证版本添加了以下内容:

//manually set error state
observable.setError = function (error) {
    observable.error = error;
    observable.__valid__(false);
};

//manually clear error state
observable.clearError = function () {
    observable.error = null;
    observable.__valid__(true);
}

因此您可以使用这些手动将错误添加到您的 observables,但就像 graeme 链接的另一个问题一样,没有内置的方法来映射它们。

我之前所做的只是在表单下方/上方显示模型状态错误以显示服务器端验证错误,并在输入类型错误旁边让 ko 验证处理所有客户端。比提出复杂的映射方案要容易得多,尤其是当您有复杂的表单数据时。

于 2013-05-26T17:50:41.257 回答
15

除了凯文所说的,我发现我需要打电话isModified才能让信息真正显示出来。我认为这是因为我更改了消息出现时的一些默认设置。

observable.setError('Your password is incorrect');
observable.isModified(true);
于 2014-06-20T23:10:54.003 回答