C# 保存时将输入(浮点)转换为整数
问题: 当表单的信息发送到POST操作时,浮点变量将丢失小数点,并转换为C# 保存时将输入(浮点)转换为整数,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,问题: 当表单的信息发送到POST操作时,浮点变量将丢失小数点,并转换为整数,而不是浮点 信息: 这是包含变量定义的类:PUnit和CoinValue: public class Device { [Key] public int DeviceID { get; set; } [Display(Name = "Precio por Jugada")] public float PUnit { get; set; } public float CoinVal
整数,而不是浮点
信息:
这是包含变量定义的类:PUnit
和CoinValue
:
public class Device
{
[Key]
public int DeviceID { get; set; }
[Display(Name = "Precio por Jugada")]
public float PUnit { get; set; }
public float CoinValue { get; set; }
}
在视图中,我展示了此类的集合,每个类都包装在一个表单中,以便单独发送给控制器:
@model IEnumerable<Application.Models.Device>
{...}
<div class="form-group" form="@(String.Format("{0}{1}", "form", item.DeviceID))">
<div>
<input type="number" name="CoinValue" asp-for="@item.CoinValue" min="0" max="5" step="0.5"
form="@(String.Format("{0}{1}", "form", item.DeviceID))" class="form-control" />
<span asp-validation-for="@item.CoinValue" class="text-danger"></span>
</div>
</div>
结果:
例如,当我插入一个0,5
的值时,它会被转换并作为5保存到数据库中。与4,5相同;显示为45,我不知道为什么。谢谢你的建议
更新:
在使用Chrome进行调试后,我发现表单中的数字是通过以下形式发送的:1.5
,而不是导致错误的1,5
。这只在这个视图中出现,因为我在另一个视图上测试了它,它没有改变数字的格式
这两种形式之间的区别在于,第二种形式仅定义为输入:
<div class="form-group">
<label asp-for="StoreArea" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="StoreArea" class="form-control" />
<span asp-validation-for="StoreArea" class="text-danger"></span>
</div>
</div>
而第一个定义为
<input type="number" {...}>
我相信添加这个`type=“number”`property会改变输入的格式,但是我的数据库不接受这个有效值。,我相信。你的意思是说你通过了0.5而不是0,5?@AndyEvans。在我的区域,我们用逗号而不是点来定义小数点,你的系统不这么认为。这就是为什么它去掉逗号,因为它假定它只是一个数字分组符号。为所需的数字格式设置一个适当的区域性。@SamiKuhmonen我同意,但在另一个视图中,我正在使用相同的逗号格式保存另一个属性(没有问题):但我将尝试检查您所说的内容请向我们展示(来自Chrome开发工具)你发布的确切有效载荷。你是说你通过了0.5而不是0.5吗?@AndyEvans。在我的区域,我们用逗号而不是点来定义小数点,你的系统不这么认为。这就是为什么它去掉逗号,因为它假定它只是一个数字分组符号。为所需的数字格式设置适当的区域性。@SamiKuhmonen我同意,但在另一个视图中,我正在使用相同的逗号格式保存另一个属性(没有问题):但我将尝试检查您所说的内容请(从Chrome开发工具)向我们显示您发布的确切负载。
<input type="number" {...}>