绑定删除十进制分隔符



我在C#Asp中的Bind函数有问题。Net。将值绑定到对象时,将删除十进制分隔符。

例如:

  • 用户输入:7,5
  • HTTP Post(根据浏览器报告(:7.5
  • 粘合值:75

因为这可能是相关的:我来自德国,因此在所有应用程序中都将德语作为语言设置。在这方面,我没有在守则内作出任何更改。

我已经尝试过不同的数据类型和HTML输入类型。你知道怎么解决这个问题吗?

这是我的密码。

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>

数据库是用实体框架迁移创建的;浮动";为有问题的列键入。

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
}

最新更新