在處理十進制數時,我在 C# Asp.Net 中的 Bind 函式有問題。當值系結到物件時,小數分隔符將被洗掉。
例如:
- 用戶輸入:7,5
- HTTP-Post(由瀏覽器報告):7.5
- 系結值:75
因為這可能是相關的:我來自德國,因此在所有應用程式中都將德語作為語言設定。我在代碼中沒有在這方面進行任何更改。
我已經嘗試過不同的資料型別和 HTML-Input-Types。關于如何解決這個問題的任何想法?
這是我的代碼。
public class ExampleClass
{
public int id { get; set; }
public string Name { get; set;}
public double Number { get; set; }
}
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Number" class="control-label"></label>
<input asp-for="Number" type ="number" min="0" max="100" class="form-control" />
<span asp-validation-for="Number" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
該資料庫是使用物體框架遷移創建的,這導致相關列的“浮動”型別。
uj5u.com熱心網友回復:
默認情況下,ASP.NET 核心中的十進制系結不是文化不變的。模型系結取決于服務器文化。您可以做以下兩件事之一:創建自定義模型系結器或(我自己解決此問題的方式)為您的應用程式設定小數分隔符。在Configure方法中Startup.cs您可以定義和設定您的文化。所以對你來說,它會是這樣的:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var cultureInfo = new CultureInfo("de-DE");
cultureInfo.NumberFormat.NumberDecimalSeparator = ".";
cultureInfo.NumberFormat.CurrencyDecimalSeparator = ".";
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
// Other configuring statements
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410250.html
標籤:
上一篇:通過toastr顯示多個錯誤
