首页 > 解决方案 > Asp 验证小数未正确绑定

问题描述

我对 asp-validation 有疑问。我有一个十进制字段,我希望它介于 0.00 和 1.00 之间。

这是我的模型

public class Intent
{
    public Guid Id { get; set; }
    public Language Language_ { get; set; }
    public Boolean Active { get; set; }
    [Range(0.00, 1.00)]
    public decimal Tolerance { get; set; }
    public LuisApp LuisAppFr_ { get; set; }
    public LuisApp LuisAppEn_ { get; set; }
    public LuisApp LuisAppNl_ { get; set; }
    public string UrlImage { get; set; }
}

这是我的 post 方法的签名:

        public async Task<IActionResult> Create([Bind("Id,Active,Tolerance,UrlImage,Language_,Language_.TextEn,Language_.TextFr,Language_.TextNl")] Intent intent)

这是我的创建视图的一部分:

<form asp-action="Create">
    <div asp-validation-summary="All" class="text-danger"></div>
    <div class="form-group">
        <div class="checkbox">
            <label>
                <input asp-for="Active" /> @Html.DisplayNameFor(model => model.Active)
            </label>
        </div>
    </div>
    <div class="form-group">
        <label asp-for="Tolerance" class="control-label"></label>
        <input asp-for="@Model.Tolerance" class="form-control"/>
        <span asp-validation-for="Tolerance" class="text-danger"></span>
    </div>
    ...
    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-default" />
    </div>
</form>

这是一张图像,显示了我的 Tolerance 字段在到达控制器时的值

这是我的网络请求的图像

我得到的错误信息

绑定在前端似乎很好,但在后端却不行。有谁知道我的错误可能是什么?

感谢您的回答。抱歉,如果是转发。

标签: asp.net-mvcvalidationasp.net-core-mvcasp.net-core-2.0

解决方案


我通过在我的 startup.cs 中添加这个解决了我的问题:

app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("en-US")
        });

推荐阅读