我有一个小问题。在 ASP.NET CORE 中的表单视图中,我想输入带小数点的双精度值(捷克语中带点),但它不想采用任何一个(对于点:值“1.5”对于...无效对于逗号:字段 .... 必须是数字。)该值不想绑定到 double 属性(十进制也有同样的问题)。一定有一些基本的东西我忽略了。
我的控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create([Bind("Id,Name,Type,ApiId,Amount,InvestedMoney")] CommodityDto commodity)
{
if (ModelState.IsValid)
{
portfolioCommodityManager.Add(commodity);
return RedirectToAction(nameof(Index));
}
return View(commodity);
}
我的财产:
public double Amount { get; set; }
我的看法:
<label asp-for="Amount" class="control-label fw-bold"></label>
<input asp-for="Amount" class="form-control" />
<span asp-validation-for="Amount" class="text-danger"></span>
这不起作用:
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("cs-CZ");
});
[DisplayFormat(DataFormatString = "{0:0.0}", ApplyFormatInEditMode = true)]
public double Amount { get; set; }
您需要将此添加到您的
Program.cs
:
var supportedCultures = new[] { new CultureInfo("cs-CZ") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("cs-CZ"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
请注意,这将禁用其他文化,例如
en-US
,因此可能也想添加它。