簡體   English   中英

十進制值對於價格無效。 MVC3

[英]Decimal value is not valid for price. MVC3

產品.cs

...
    [Required(ErrorMessage="Price is required")]
    [Range(0.01, 100000.00,
        ErrorMessage="Price must be between 0.01 and 100000.00")]
    public decimal Price { get; set; }
...

當我輸入“89.48”時,表單給出“值“89.48”對價格無效”。 我認為這是因為我電腦的默認語言。 它不是英語。 它是俄語。在此處輸入圖片說明

我試圖通過haacked.com說明解決這個問題:

  1. 我創建了模型類 DecimalModelBinder 並將代碼從 haacked.com 復制到類中
  2. 更新了 Global.asax

     ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());

    沒有效果。 然后我嘗試通過客戶端驗證修復它 1.Added JavaScript file called "jQueryFixes.js" with code

 $.validator.methods.range = function (value, element, param) { var globalizedValue = value.replace(",", "."); return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]); } $.validator.methods.number = function (value, element) { return this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:[\\s\\.,]\\d{3})+)(?:[\\.,]\\d+)?$/.test(value); }

這段代碼沒有解決這個問題。 你能建議我在這里做錯什么嗎?

我在 web.config 中設置

<system.web>
    <globalization uiCulture="en-US" culture="en-US"/>
<system.web>

這個解決方案對我有用,我遇到了同樣的錯誤

嘗試這個

    [Required(ErrorMessage = "Price is required")]
    [Range(typeof(decimal), "0.01", "100000.00", ErrorMessage = "enter decimal value")]
    [RegularExpression(@"^\[0-9]{1,6}\.[0-9]{2}$", ErrorMessage="enter decimal value of format $9.99")]
    public decimal Price { get; set; }

應該有幫助。

在您的DecimalModelBinder類中替換為這個。

//if with period use InvariantCulture
if (valueResult.AttemptedValue.Contains("."))
{
    actualValue = Convert.ToDecimal(valueResult.AttemptedValue,
    CultureInfo.InvariantCulture);
}
else
{
    //if with comma use CurrentCulture
    actualValue = Convert.ToDecimal(valueResult.AttemptedValue,
    CultureInfo.CurrentCulture);
}

解決方案來自此鏈接

在 Global.asax 文件中使用以下代碼解決了我的土耳其語問題

protected void Application_BeginRequest()
{
    var cultureInfo = new CultureInfo("tr-TR");
    cultureInfo.NumberFormat.NumberDecimalSeparator = ".";
    System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;
    Thread.CurrentThread.CurrentCulture = cultureInfo;
}

嘗試這個:

[Required(ErrorMessage = "Price is required")]
[DataType(DataType.Currency)]
public decimal Price { get; set; }    

暫無
暫無

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

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