【发布时间】:2018-06-05 08:08:25
【问题描述】:
在 Asp.net 网络核心表单中,我有字段价格。当我尝试输入像 255,55 这样的价格时,验证失败告诉我,这不是一个数字。 当我尝试 255.55 时,验证接受它,但它随后被读取为 2.555,00
这些是视图和模型:
@model IEnumerable<Product>
@{ ViewBag.Title = "All Products";
Layout = "_AdminLayout";}
<table class="table-striped table-bordered" style="width:80%">
<tr>
<th class="text-right">ID</th>
<th>Name</th>
<th class="text-right">Price</th>
<th class="text-center">Actions</th>
</tr>
@foreach (Product item in Model)
{
<tr>
<td>@item.ProductID</td>
<td>@item.Name</td>
<td class="text-right">@item.Price.ToString("c")</td>
<td class="text-center">
<form asp-action="Delete" method="post">
<a asp-action="Edit" class="btn btn-sm btn-danger"
asp-route-productId="@item.ProductID">Edit</a>
<input type="hidden" name="ProductID" value="@item.ProductID" />
<button type="submit" class="btn btn-danger btn-sm">Delete</button>
</form>
</td>
</tr>
}
</table>
<div class="text-center"><a asp-action="Create" class="btn btn-default">Add Product</a></div>
namespace SportStore.Models
{
public class Product
{
public int ProductID { get; set; }
[Required(ErrorMessage ="Please enter a product name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a product description")]
public string Description { get; set; }
[Range(0.01, double.MaxValue, ErrorMessage = "Please enter a positive price")]
[Required]
public decimal Price { get; set; }
[Required(ErrorMessage = "Please specify a category")]
public string Category { get; set; }
}
}
为了让它工作,我在启动的配置方法中应用了以下补丁:
var defaultDateCulture = "it-IT";
var ci = new CultureInfo(defaultDateCulture);
ci.NumberFormat.NumberDecimalSeparator = ".";
ci.NumberFormat.CurrencyDecimalSeparator = ".";
// Configure the Localization middleware
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(ci),
SupportedCultures = new List<CultureInfo>
{
ci,
},
SupportedUICultures = new List<CultureInfo>
{
ci,
}
});
但如果我替换“。”使用“,”我遇到了同样的问题
【问题讨论】:
-
您是否启用了客户端验证并收到客户端错误(在这种情况下您需要重新配置验证程序。或者您是否收到服务器端错误,在这种情况下您需要设置您的应用的文化。
标签: c# asp.net-mvc forms currency