0

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

我的模型服务器端:

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无效 OK
  • 123abc 有效挪威克朗

在上面的测试中,当我说“有效/无效”时,我的意思是验证成功/失败,当我说“OK/NOK”时,我的意思是这个验证是我期望/不期望的。

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

然后出于测试目的,我将模型服务器端从:

public double Amountpublic string Amount,结果是:

  • 123有效的
  • azerty无效 OK
  • 123abc 无效 OK

因此,a 的行为似乎string比 a更好,double但我需要一个double字段来表示我的数量,这更有意义!

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

谢谢。

4

0 回答 0