c# - Asp net 输入价格值
问题描述
在 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; }
}
}
为了使它工作,我在 Startup 的 Configure 方法中应用了以下补丁:
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,
}
});
但是如果我替换“。” 使用“,”我遇到了同样的问题
解决方案
[RegularExpression(@"^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$", ErrorMessage = "Please enter valid price")]
我认为您需要对价格使用正则表达式
推荐阅读
- python - Pandas:groupby() 下的 rank() 返回“ValueError:传递的项目数错误 2,位置暗示 1”
- windows - Gitlab管道启动powershell
- rust - 如何使用 None 值序列化/反序列化地图
- jestjs - 使用 jest 将 ngOnInit 替换为 mock
- python - 在 pdf 中搜索特定单词并仅返回找到单词的 pdf 链接(Python)
- c# - 正则表达式拆分逗号前面没有特定单词
- .net - 如何在本地使用 teamcity 发布到 nuget 提要
- python - 如何使用最近邻居或其他东西对类似的 numpy 数组进行分组
- django - django orm 过滤器和嵌套预取
- redirect - 登录drupal 8后重定向