C# asp.net data annotation setting field to only number 但不是必需的

C# asp.net data annotation setting field to only number but not required

我有一个视图模型 class,我将其设置为在我的项目中使用数据注释进行验证,如下所示:

[Range(0, double.MaxValue, ErrorMessage = "Please enter valid minimum price (e.g. 20.00)")]

    public double MinPrice { get; set; }
    [Range(0, double.MaxValue, ErrorMessage = "Please enter valid maximum price (e.g. 20.00)")]

    public double MaxPrice { get; set; }

我想做的是仅在输入内容时才触发验证,并且该内容不是有效的双数...如果该字段留空我只想忽略它...

我现在的做法是,如果我先输入一些内容,然后尝试将字段留空,验证会触发并说该字段是必需的,这不是我想要的...

我做错了什么?

您应该使用 'RegularExpression' 而不是 'range'。类似于:

[RegularExpression(@"^-?[0-9]\d{0,2}(\.\d{0,1})?$", ErrorMessage = "Invalid value")]
    [RegularExpression(@"-?\d+(?:\.\d+)?", ErrorMessage = "Please enter valid minimum price (e.g. 20.00)")]
    [Range(0, double.MaxValue, ErrorMessage = "Please enter valid minimum price (e.g. 20.00)")]
    public double? dub { get; set; }

将您的模型更改为双倍?如果您要允许空值