我有一個看起來像這樣的輸入欄位
<td><input type="text" onchange="changesUnSaved()" pattern="[0-9,]{0,4}" title="Lorum ipsum" value="@(Model.EstablishmentWeeks.Single(x => x.WeekNumber == weekNum && x.Year == currentYear).Hours / 40.0)" class="form-control" name="amountOfFTE"></td>
此輸入欄位用于呼叫需要浮點數的函式。
該函式如下所示:
public IActionResult UpdateEstablishmentWeeks(int esteblishmentId, int currentYear, int weekNum, float amountOfFTE)
在我的本地環境中,如果我輸入十進制數,例如25,5,值中的逗號將保留,結果為 25,5
但是在我將代碼發布到生產環境后,我發現了一些奇怪的東西。
在生產環境中,如果我輸入十進制數,例如25,5,值中的逗號將被洗掉,結果為 255
我認為這與我的瀏覽器有關,但我不確定。有人知道這個問題的解決方案嗎?
uj5u.com熱心網友回復:
這是一個文化/語言環境問題。在您的本地計算機上,您可能有一個帶有逗號小數位分隔符的語言環境(德語、俄語等)。在這種情況下,當后端獲得“25,5”時,它會通過決議當前文化將其系結到模型,結果為 25.5。
但是,看起來生產環境有一個點分數數字分隔符(例如英語)和逗號千位分隔符。因此,當后端獲取字串“25,5”時,它會使用英語語言環境對其進行決議,從而為您提供結果中的數字 255。
沒有一個靈丹妙藥,如何在應用程式中處理文化/地區特定的東西。它包括幾種策略,各有優缺點。它的例子可能是:
- 將前端和后端都鎖定為 CultureInvariant 數字格式(https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-6.0#globalization-behavior-of-model-系結路由資料和查詢字串)
- 根據客戶位置/選擇的語言設定系結區域設定,并期望客戶以他們的文化格式輸入數字
- 期望可以用逗號或點輸入該數字,并嘗試以兩種方式系結它,在每種情況下選擇最佳結果
- 和別的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/490444.html
