ASP.NET MVC中无法正确提交小数数值问题求助
问题排查与解决步骤
1. 修正视图字段绑定错误
你的视图中输入框的asp-for属性写的是HayvanKilo,但实体类的属性是animalWeight,字段名不匹配会导致模型绑定异常,这很可能是解析错误的根源。把输入框代码改成:
<input type="number" asp-for="animalWeight" class="form-control" placeholder="Animal Weight" step="0.1">
2. 检查并配置服务器区域文化
如果你的输入习惯用逗号(,)作为小数点分隔符(比如土耳其语区域场景),但服务器默认文化是用点(.)作为小数点,会导致解析时忽略逗号,把4,5识别成45。可以通过以下方式配置:
在Program.cs中添加全局文化支持(以土耳其语为例):
var builder = WebApplication.CreateBuilder(args); // 添加文化配置 builder.Services.Configure<RequestLocalizationOptions>(options => { var supportedCultures = new[] { "tr-TR", "en-US" }; options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("tr-TR"); options.SupportedCultures = supportedCultures.Select(c => new System.Globalization.CultureInfo(c)).ToList(); options.SupportedUICultures = options.SupportedCultures; }); var app = builder.Build(); // 启用本地化中间件 app.UseRequestLocalization();
3. 给模型属性添加格式注解
在实体类的animalWeight属性上添加格式化注解,确保编辑和显示时都能正确识别小数:
public partial class animal { [DisplayFormat(DataFormatString = "{0:F1}", ApplyFormatInEditMode = true)] public double animalWeight { get; set; } }
4. 验证前端提交参数
打开浏览器开发者工具(F12),切换到网络标签,提交表单后查看请求参数,确认前端发送的数值是4.5/4,5还是45:
- 如果发送的是
45,说明前端输入或转码有问题,检查输入框的step属性是否正确,或者是否有前端脚本修改了数值; - 如果发送的是
4.5/4,5但后端接收为45,则重点排查后端的文化配置和模型绑定逻辑。
内容的提问来源于stack exchange,提问作者umut günenç
相关产品推荐
相关产品推荐

