绑定移除小数点分隔符

Binding removes decimal separator

我在处理十进制数字时遇到 C# Asp.Net 中的绑定函数问题。当值绑定到对象时,小数分隔符将被删除。

例如:

因为这可能是相关的:我来自德国,因此在所有应用程序中都将德语设置为语言设置。我没有在代码中对这方面进行任何更改。

我已经尝试过不同的数据类型和 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>

数据库是使用 entity framework 迁移创建的,这导致相关列的类型为“浮动”。

ASP.NET 核心中的十进制绑定在默认情况下不是文化不变的。模型绑定取决于服务器文化。您可以执行以下两项操作之一:创建自定义模型活页夹或(我自己解决此问题的方式)为您的应用程序设置小数点分隔符。 在 Startup.cs 中的 Configure 方法中,您可以定义和设置您的文化。所以对你来说它会是这样的:

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
}