html - 输入类型编号奇怪的行为
问题描述
我正在构建一个水果和蔬菜电子商务应用程序。<input type="number">
我已经为用户创建了一个系统,可以通过在表单中的字段中输入值来将商品添加到购物车中。
我遇到的问题是,例如,当我输入“1.2”时,我的服务器收到值“12”。但是当我输入值“1”时,我的服务器只收到值“1”。这真的让我很烦。有谁知道为什么会这样?
提前致谢。
一些上下文数据:我的后端是在 Asp.Net Core 3.x 中构建的。后端端点如下所示:
[HttpPost]
public ActionResult UpdateShoppingCart(int productId, float amount)
{
Console.WriteLine(amount);
var selectedProduct = _productRepository.Products.SingleOrDefault(p => p.Id == productId);
float productCount = 0;
if(selectedProduct != null)
{
productCount = _shoppingCart.UpdateCart(selectedProduct, realAmount);
}
return Redirect(Request.Headers["Referer"].ToString());
}
html部分看起来像这样
<div class="text-center">
<div class="float-left">
<p>Cantidad:</p>
</div>
<div class="float-right">
<form method="post" class="form-inline" asp-controller="ShoppingCart" asp-action="UpdateShoppingCart">
<input type="hidden" name="productId" value="@Model.Product.Id"/>
<input name="amount" type="number" class="form-control h-auto input-add-to-cart" data-id="@Model.Product.Id" min=0 step="0.1" value="@(Model.ShoppingCartItem != null ? (Model.ShoppingCartItem.Amount).ToString(new CultureInfo("en-US")) : (0).ToString())"/>
<button type="submit" id="update-button-@Model.Product.Id" disabled class="ml-1 btn btn-sm btn-outline-warning"><i class="material-icons material-icons-actual-font" disabled>shopping_cart</i>Actualizar</button>
</form>
</div>
</div>
更新:
ShoppingCartItem 模型的代码如下:
public class ShoppingCartItem
{
public int Id { get; set; }
public Product Product { get; set; }
public int ProductId { get; set; }
public float Amount { get; set; }
public string ShoppingCartId { get; set; }
}
第二次更新:
难道是我在使用逗号作为点的线程中设置了一种文化?
在Configure
方法中Startup
,我正在设置
var cultureInfo = new CultureInfo("es-CL");
cultureInfo.NumberFormat.CurrencySymbol = "$";
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
解决方案
好的,就是这样。
问题是我的浏览器将小数点分隔符设置为点(例如,4.7
),而我的后端需要一个逗号(例如,4,7
),所以这让我的应用程序感到困惑。
罪魁祸首是我第二次更新时发布的内容,那是
var cultureInfo = new CultureInfo("es-CL");
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
推荐阅读
- javascript - JavaScript中根据输入字段值变化调用函数
- typescript - 在类型/接口中使用关键别名?
- amazon-web-services - 在 AWS 上使用多个 GPU 进行渲染
- function - 如何根据类型定义函数?
- arrays - 与 powershell 中的正则表达式数组进行比较
- javascript - 使用打字稿中的纯 JS 模块的最佳实践是什么?
- javascript - XSS:如何从 C# 中的字符串中删除 JS 片段?
- sql - 选择事件发生后最后 n 天的行
- ruby-on-rails - 文件更改不会反映在 Docker webapp 中
- ios - 如何在 SwiftUI 的视图控制器中实现数据绑定?