绑定移除小数点分隔符
Binding removes decimal separator
我在处理十进制数字时遇到 C# Asp.Net 中的绑定函数问题。当值绑定到对象时,小数分隔符将被删除。
例如:
- 用户输入: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>
数据库是使用 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
}
我在处理十进制数字时遇到 C# Asp.Net 中的绑定函数问题。当值绑定到对象时,小数分隔符将被删除。
例如:
- 用户输入: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>
数据库是使用 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
}