【问题标题】:Binding removes decimal separator绑定删除小数分隔符
【发布时间】:2022-01-13 17:15:07
【问题描述】:

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

例如:

  • 用户输入: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>

已使用实体框架迁移创建数据库,这导致相关列的“浮动”类型。

【问题讨论】:

  • 数据库中存储了什么?
  • 您的输入是否允许使用小数分隔符?见stackoverflow.com/a/34057860/3279876
  • @PriyankPanchal 没有小数点分隔符的值。在示例中,将存储 75 个。

标签: c# asp.net-mvc asp.net-core


【解决方案1】:

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

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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多