Entity framework 基于正则表达式的My(ko.)验证不';有些输入不起作用

Entity framework 基于正则表达式的My(ko.)验证不';有些输入不起作用,entity-framework,knockout.js,ef-code-first,Entity Framework,Knockout.js,Ef Code First,我尝试为我的金额字段设置验证。我只允许使用数字字符。我选择使用正则表达式进行验证 我的模型服务器端: public class InvoiceLine { [Key] public int Id { get; set; } public string Description { get; set; } public double Amount { get; set; } } 用于验证我的金额客户端的正则表达式: invoiceLine.amount.extend

我尝试为我的
金额
字段设置验证。我只允许使用数字字符。我选择使用正则表达式进行验证

我的模型服务器端:

public class InvoiceLine
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    public double Amount { get; set; }
}
用于验证我的金额客户端的正则表达式:

invoiceLine.amount.extend({
    pattern: {
        message: 'warning!',
        params: '^[1-9]\d*$'
    }
});
那么在我看来,

<input type="text" data-bind="value: amount, valueUpdate: 'afterkeydown', validationOptions: { errorElementClass: 'input-validation-error' }" />

测试:

  • 123
    有效正常
  • azerty
    无效正常
  • 123abc
    有效NOK
在上面的测试中,当我说“有效/无效”时,我指的是验证成功/失败,当我说“确定/不确定”时,我指的是这个验证是我预期的/不预期的

所以第三个测试不是我所期望的,我不知道为什么ko.validation没有将其标记为无效。似乎只要第一个字符是数字,不管下一个是什么,它都不会被标记为无效

出于测试目的,我将模型服务器端更改为:

public double Amount
public string Amount
,结果是:

  • 123
    有效正常
  • azerty
    无效正常
  • 123abc
    无效OK
因此,使用
字符串
的行为似乎比使用
双精度
更好,但我需要一个
双精度
字段来表示我的金额,使其更有意义

您知道如何在为该字段保留
double
类型时对我的金额进行完全满意的验证吗


谢谢。

您能发布发送到服务器的JSon(带字符串和双精度)吗?我认为这种行为与parseFloat('12.3abc')返回12.3的事实有关,因为这(ko.)验证是客户端的,所以没有任何东西发送到服务器。之后,发送到服务器的操作要多得多。当我在浏览器(F12)中检查网络流量时,当我更改文本框中的值(以验证)时,不会发送任何信息,这是正常的。无论如何,谢谢。请尝试使用:
params://^[1-9]\d*$//
因此
/
而不是
我尝试了
params://^[1-9]\d*$/
并且遇到了同样的问题:只要第一个字符是数字,其余输入的所有类型字符的验证都会成功(例如:“1hello”验证成功,“hello”验证失败)。