簡體   English   中英

為什么 Decimal 的驗證不適用於 ASP.NET Core 3.1 Razor Pages?

[英]Why validation for Decimal not work for ASP.NET Core 3.1 Razor Pages?

為什么 Decimal 的驗證不適用於 ASP.NET Core 3.1 Razor Pages?

客戶端工作,但在發布數據后,我收到此服務器端驗證消息(在我的情況下為 ModelState.IsValid = false)。 值“1.000000”不適用於...

在此處輸入圖片說明

模型屬性:

[Column(TypeName = "decimal(16, 6)")]
public decimal ValueFactor { get; set; }

看法:

<input class="form-control" asp-for="@Model.ValueFactor" />
<span asp-validation-for="ValueFactor" class="text-danger"></span>

事情是在我的計算機的區域設置中,其中十進制符號是逗號。

我找到了一個解決方案,問題是在我的計算機的區域設置中,其中十進制符號是逗號。 服務器端需要小數點分隔符,但我的客戶端需要逗號,如圖所示,這就是不一致的原因,為了解決這個問題,您只需要更改小數符號類型,如圖所示。

Column屬性是Code First Data Annotation

為了驗證十進制,您需要結合使用正則表達式和范圍驗證,如下所示:

[RegularExpression(@"^\d+\.\d{6}$")]
[Range(0, 9999999999.999999)]

上面的正則表達式屬性將接受“任意數量的數字,后跟點(.)然后是 6 位數字”。 因此接受以下數字:1.000000、500000.000000 etx。

范圍屬性接受 0 到 9999999999.999999 之間的類型decimal(16,6) 的數字

在服務器端嘗試這樣的事情。

public class PersonModel
{
    [Required(ErrorMessage = "Required Decimal Number")]
    [RegularExpression(@"^[0-9]+(\.[0-9]{1,100})$", ErrorMessage = "Valid Decimal number with maximum  decimal places.")]
    public string Expenses { get; set; }
}

我的模型

    [Column(TypeName = "decimal(18,2)")]
    public Decimal Bonus { get; set; }

我創建了一個視圖模型。

    [Display(Name="Ek Ücret")]
    [RegularExpression(@"^(\d+),(\d{2})$", ErrorMessage = "Tutar 0,00 - 9999999999,99 aralığında olmalıdır. ")]
    public string Bonus { get; set; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM