提问人:Tsko 提问时间:8/7/2023 最后编辑:marc_sTsko 更新时间:8/7/2023 访问量:77
在 ASP.NET Core 中将视图窗体绑定到模型属性的双精度值时出现问题
Problem with binding to double value from view form to model property in ASP.NET Core
问:
我有一点问题。在 ASP.NET Core 中,在表单中,我想输入带有小数点的双精度值(在捷克语中带有点),并且不想采用任何一个(对于点:值“1.5”对...对于逗号:字段....必须是数字)。
该值不想绑定到 double 属性(与 decimal 相同的问题)。一定有一些基本的东西被我忽略了。
我的控制器:
[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; }
答:
0赞
ctyar
8/7/2023
#1
您需要将其添加到您的:Program.cs
var supportedCultures = new[] { new CultureInfo("cs-CZ") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("cs-CZ"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
请注意,这将禁用其他文化喜欢,因此您可能也想添加它。en-US
评论
0赞
Tsko
8/7/2023
谢谢,但这也行不通...... :(,
0赞
ctyar
8/7/2023
@Tsko我已经测试过了,我确信它有效,所以问题是另一回事。确保这是之后的第一件事,让我知道它是怎么回事。var app = builder.Build();
0赞
Tsko
8/7/2023
如果这不能解决,我会将所有十进制和双精度模型更改为字符串。这似乎是最通用的解决方案;)
0赞
Tsko
8/7/2023
“确保这是 var app = builder 之后的第一件事。Build()“ - 仍然不起作用...
1赞
ctyar
8/7/2023
@Tsko我在这里创建了一个示例项目: github.com/ctyar/modelbindingsample 它只是 double 属性的表单。如果你发送它将显示无效,但如果你发送它会接受它。1.2
1,2
评论