В форме ядра 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; }
}
}
Чтобы это работало, я применил следующеепатч в методе 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,
}
});
Но если я заменю «.»с "," я попадаю в ту же проблему