2011-02-03 62 views
3

我也跟着這個博客herehereASP.NET MVC 3 - 客戶端驗證與錢場

而我有以下問題。

我的表單中的一個字段是來自巴西的currecy格式。 我正在使用客戶端驗證。一切工作都很好,解決了一個問題。

我有2個驗證:

[DisplayName("Taxa de adesão")] 
[MoedaReal(ErrorMessage = "Taxa deve ser numérico")]   
[Required(ErrorMessage = "Taxa é obrigatório")] 
public decimal ValorAdesao { get; set; } 

的規則所規定的工程確定,該MoedaReal規則工作好。 後這些規則被傳遞好吧,最後一個規則被觸發:

  • 領域類羣德adesão必須是數字

我已經試圖改變這個web.config中行:

<globalization culture="pt-br" uiCulture="pt-br" /> 

我的數字格式accepcted是這些:

1,00 
11,00 
111,00 
1.111,00 
11.111,00 
111.111,00 
1.111.111,00 
1.111.111.111.111,00 

我該如何「愚弄」.NET接受這種格式?因爲它需要改爲DECIMAL格式。

回答

2

你不能欺騙默認的模型聯編程序。它只是嘗試使用web.config中指定的區域性將請求字符串值解析爲小數。因此,因爲您也在使用客戶端驗證,所以客戶端和服務器之間可能存在文化差異。例如,可以將瀏覽器配置爲使用en-US和服務器pt-BR,然後您可能會遇到問題。你可以試試這個:

<globalization culture="auto" uiCulture="auto" /> 

這意味着服務器使用的文化將由客戶端支配。如果不工作,你有一對夫婦的其他可能性:

  • 編寫自定義的模型綁定
  • 使用字符串,而不是小數,然後進行手工
+1

解析使用字符串解決了所有問題。它並沒有跨越我的想法!謝謝 – Ismael 2011-02-04 17:46:09